国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 開發(fā) > Java > 正文

Java文本編輯器實現(xiàn)方法詳解

2024-07-14 08:43:40
字體:
供稿:網(wǎng)友

本文實例講述了Java文本編輯器實現(xiàn)方法。分享給大家供大家參考,具體如下:

結(jié)構(gòu)分析:

  • 界面布局 : EditFrame
  • main方法所在: EditText
  • 打開功能實現(xiàn):  FileReadThread
  • 保存跟能實現(xiàn):  save

實際運行效果:

Java,文本編輯器

附:完整代碼實現(xiàn)

一、 EditFrame

Java,文本編輯器

包括一個菜單Menu

底部:日期時間

代碼附上:

public class EditFrame extends JFrame { // TODO 自動生成的構(gòu)造函數(shù)存根 boolean saveFlag = false; File saveFileRoot = null; JFrame jFrame; JPanel jPanelSouth; JMenuBar jMenuBar1; JMenu jMenu1; JMenuItem jMenuItem1; JMenuItem jMenuItem2; JMenuItem jMenuItem3; JMenuItem jMenuItem4; JSeparator jSeparator1; JTextArea jTextArea; JScrollPane scrollPane;// 滾動條 public EditFrame() { // TODO 自動生成的構(gòu)造函數(shù)存根 jFrame = new JFrame("水中魚之1999-文本編輯器"); jPanelSouth = new JPanel(); jMenuBar1 = new JMenuBar(); jMenu1 = new JMenu("文件"); jMenuItem1 = new JMenuItem("打開"); jMenuItem2 = new JMenuItem("保存"); jMenuItem3 = new JMenuItem("另存為"); jMenuItem4 = new JMenuItem("退出"); jSeparator1 = new JSeparator(); jTextArea = new JTextArea(); scrollPane = new JScrollPane(jTextArea); jFrame.setSize(800, 500); jFrame.setLocationRelativeTo(null); jFrame.setVisible(false);  setLayout(); setSouthPanel(); // set relationship for your component setRelationShip(); // 設(shè)置 scrollPane for TextArea setScscrollPane(); iniClick(); } private void setRelationShip() { jFrame.add(BorderLayout.CENTER, scrollPane); jFrame.add(BorderLayout.SOUTH, jPanelSouth); jMenu1.add(jMenuItem1); jMenu1.add(jMenuItem2); jMenu1.add(jMenuItem3); jMenu1.add(jSeparator1); jMenu1.add(jMenuItem4); jMenuBar1.add(jMenu1); jFrame.setJMenuBar(jMenuBar1); } private void setLayout() { GridLayout gridLayout = new GridLayout(1, 2); jPanelSouth.setLayout(gridLayout); } private void setScscrollPane() {// jTextArea.setLineWrap(true);// 設(shè)置滿一行自動換行 scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); } private void setSouthPanel() { // add time for SouthPanel JLabel jLabelDate = new JLabel("Date"); JLabel jLabelTime = new JLabel("Time"); Timer timeAction = new Timer(1000, new ActionListener() {  public void actionPerformed(ActionEvent e) {  long timemillis = System.currentTimeMillis();  // 轉(zhuǎn)換日期顯示格式  SimpleDateFormat date = new SimpleDateFormat("yyyy 年 MM 月 dd 日 ");  jLabelDate.setText("  當(dāng)前日期: " + date.format(new Date(timemillis)));  SimpleDateFormat time = new SimpleDateFormat("HH:mm:ss ");  jLabelTime.setText("  當(dāng)前時間: " + time.format(new Date(timemillis)));  } }); jPanelSouth.add(jLabelDate); jPanelSouth.add(jLabelTime); timeAction.start(); } private void iniClick() { jFrame.addWindowListener(new WindowListener() {  @Override  public void windowOpened(WindowEvent e) {  // TODO Auto-generated method stub  }  @Override  public void windowIconified(WindowEvent e) {  // TODO Auto-generated method stub  }  @Override  public void windowDeiconified(WindowEvent e) {  // TODO Auto-generated method stub  }  @Override  public void windowDeactivated(WindowEvent e) {  // TODO Auto-generated method stub  }  @Override  public void windowClosing(WindowEvent e) {  // TODO Auto-generated method stub  int x = JOptionPane.showConfirmDialog(null, "確認(rèn)退出么?", "友情提示", JOptionPane.OK_CANCEL_OPTION,   JOptionPane.WARNING_MESSAGE);  if (x == 0) {   System.exit(0);  }  }  @Override  public void windowClosed(WindowEvent e) {  // TODO Auto-generated method stub  }  @Override  public void windowActivated(WindowEvent e) {  // TODO Auto-generated method stub  } }); jMenuItem4.addActionListener(new ActionListener() {  @Override  public void actionPerformed(ActionEvent e) {  // TODO Auto-generated method stub  int x = JOptionPane.showConfirmDialog(null, "確認(rèn)退出么?", "友情提示", JOptionPane.OK_CANCEL_OPTION,   JOptionPane.WARNING_MESSAGE);  if (x == 0) {   System.exit(0);  }  } }); jMenuItem1.addActionListener(new ActionListener() {  @Override  public void actionPerformed(ActionEvent e) {  // TODO Auto-generated method stub  FileReadThread fileReadThread = new FileReadThread(EditFrame.this);// 開啟文件讀取線程  fileReadThread.start();  System.out.println(saveFileRoot);  saveFlag = true;  jTextArea.setText("");  } }); jMenuItem3.addActionListener(new ActionListener() {  @Override  public void actionPerformed(ActionEvent e) {  // TODO Auto-generated method stub  Save save = new Save(EditFrame.this);  save.start();  saveFlag = true;  } }); jMenuItem2.addActionListener(new ActionListener() {  @Override  public void actionPerformed(ActionEvent e) {  // TODO Auto-generated method stub  if (!saveFlag) {   Save save = new Save(EditFrame.this);   save.start();   saveFlag = true;  } else {   new Save(EditFrame.this, saveFileRoot);  }  } }); } public JTextArea getjTextArea() { return jTextArea; } public void setjTextArea(JTextArea jTextArea) { this.jTextArea = jTextArea; } public File getSaveFileRoot() { return saveFileRoot; } public void setSaveFileRoot(File saveFileRoot) { this.saveFileRoot = saveFileRoot; } public JFrame getjFrame() { return jFrame; } public void setjFrame(JFrame jFrame) { this.jFrame = jFrame; }}

二、測試類 EditText

分兩部分:

1.閃屏 由于加載頁面需要時間 原想用 SplashScreen 由于打包成jar包才能用所以這里用jframe進行替代

閃屏圖片直接粘貼到:

Java,文本編輯器

2.new 一個EditFrame 對象, 閃屏結(jié)束后設(shè)置為可見

public class EditText { public static void main(String[] args) { new Thread() {  @Override  public void run() {  // TODO Auto-generated method stub  EditFrame editFrame = new EditFrame();    JFrame jFrame = new JFrame();  JPanel jPanel = new javax.swing.JPanel(){    protected void paintComponent(java.awt.Graphics g){      super.paintComponent(g);      g.drawImage(new ImageIcon("experiment_bac.jpg").getImage(),0,0,400,250,null);    }  };  jFrame.add(jPanel);  jFrame.setVisible(true);  jFrame.setSize(400, 300);  jFrame.setLocationRelativeTo(null);    try {   sleep(1500);  } catch (InterruptedException e) {   // TODO Auto-generated catch block   e.printStackTrace();  }  jFrame.dispose();  editFrame.getjFrame().setVisible(true);  } }.start(); }}

三、FileReadThread

調(diào)用swing自帶的 JFileChooser

選擇文件路徑

class FileReadThread extends Thread { private EditFrame test; public FileReadThread(EditFrame test ) { this.test = test; } @Override public void run() { JFileChooser chooser = new JFileChooser("d:/"); chooser.setFileFilter(new FileFilter() {// 定義文件過濾器,僅顯示文件夾和txt文本  @Override  public String getDescription() {  return null;  }  @Override  public boolean accept(File file) {  if (file.isDirectory() || file.getName().endsWith(".txt"))   return true;  return false;  } }); int option = chooser.showOpenDialog(test); if (option == JFileChooser.APPROVE_OPTION) {  File selFile = chooser.getSelectedFile();  try {  BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(selFile), "gbk"));  test.setSaveFileRoot(selFile);  String line = null;  while ((line = reader.readLine()) != null) {   test.getjTextArea().append(line + "/n");   Thread.sleep(30);// 線程暫停,以看到讀取過程效果  }  } catch (Exception e1) {  e1.printStackTrace();  }  JOptionPane.showMessageDialog(test, "讀取完畢"); } }}

四、save 保存

保存的調(diào)用分三種:

  • 如果該文件是打開的 那么保存到打開文件中
  • 如果該文件還未保存 這調(diào)用:進行保存
  • 如果該文件已經(jīng)另存為,則直接保存到另存為得的目錄下
public class Save extends Thread { private EditFrame area; private File saveFileRoot = null; public Save(EditFrame area, File saveFileRoot) { System.out.println(saveFileRoot + "123"); String text = area.getjTextArea().getText(); String[] lines = text.trim().split("/n"); try {  PrintWriter out = new PrintWriter(new FileOutputStream(saveFileRoot), true);  for (String line : lines)  out.println(line); } catch (FileNotFoundException e) {  // TODO Auto-generated catch block  e.printStackTrace(); } } public Save(EditFrame area) { this.area = area; JFileChooser chooser = new JFileChooser(); chooser.setCurrentDirectory(new File(".")); chooser.setFileFilter(new FileFilter() {  @Override  public boolean accept(File f) {  return f.getName().toLowerCase().endsWith(".txt");  }  @Override  public String getDescription() {  return "SAVE TO";  } }); int r = chooser.showSaveDialog(area); if (r != JFileChooser.APPROVE_OPTION)  return; File f = chooser.getSelectedFile(); area.setSaveFileRoot(f); String text = area.getjTextArea().getText(); String[] lines = text.trim().split("/n"); try {  PrintWriter out = new PrintWriter(new FileOutputStream(f), true);  for (String line : lines)  out.println(line); } catch (FileNotFoundException e) {  // TODO Auto-generated catch block  e.printStackTrace(); } } public File getSaveFileRoot() { return saveFileRoot; } public void setSaveFileRoot(File saveFileRoot) { this.saveFileRoot = saveFileRoot; }}

希望本文所述對大家java程序設(shè)計有所幫助。


注:相關(guān)教程知識閱讀請移步到JAVA教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
日本不卡视频一区二区| 一级二级三级在线观看| 福利视频网站导航| 另类综合图区| 黄色毛片在线| 国产高清免费av在线| 精品日韩av| 九九热在线免费视频| 国产一二三在线观看| 国产黄色免费在线观看| av免费在线观| 国产午夜在线观看| 日本电影在线观看| 中文字幕免费中文| 日本片在线看| 黄色电影网站在线观看| 中文字幕色视频| 日本一级理论片在线大全| 91福利在线免费| 亚洲人成电影| 国产视频xxx| 久久综合第一页| 在线三级av| 国产精品视频白浆合集| 国产在线看片| 青青九九免费视频在线| 69av二区| 国产精品麻豆一区二区三区 | 国产免费黄色| 精品视频二区| 国产欧美日韩精品综合| 国产乱视频在线观看播放| www.成人.com| 日本亚洲欧美| 在线观看视频污| 在线亚洲不卡| 91美女在线| 伊人免费在线| a视频免费看| 香蕉视频在线观看www| 999精品网| 999福利在线视频| 精品一区二区三区免费站| 国产变态拳头交视频一区二区| 国产一区二区三区美女秒播| 五月亚洲综合| 国产精品第八页| 91亚洲欧美| 性网站在线播放| 日本欧洲一区| 国产精品外围在线观看| 国产理论片免费观看| 久久国产热视频| 国产麻豆精品视频一区二区| 国产美女福利在线| 国产视频精品久久| 国产三级香港三韩国三级| 精品国内自产拍在线视频| 在线观看的av| 九九热免费在线视频| 国产女王在线**视频 | 欧美精品另类| 国内外激情在线| 国产区卡一卡二卡三乱码免费| 国产一级片网站| 精品极品三级久久久久| 日本aⅴ写真网站免费| 国产麻豆精品入口在线观看 | 国产字幕在线看| 国产精品区一区二| 四虎a级欧美在线观看| 国产永久免费高清在线观看视频| 最好2018中文免费视频| 精品乱码一区二区三四区视频| 香蕉视频网站在线播放| 日本中文字幕在线看| av在线官网| 91九色在线看| 国产欧美日韩第一页| 九九在线观看免费视频| 一区二区三区四区在线免费视频| 国产精品臀控福利在线观看| 精品黄色免费中文电影在线播放| 久草视频国产| 开心婷婷激情五月| 日本欧美在线视频免费观看| 国产极品嫩模在线视频一区| 国产麻豆精品一区二区三区v视界| 在线观看午夜av| 91麻豆精品国产91久久| 国产一级电影网| 福利视频网址导航| www.香蕉视频在线观看| 亚洲综合天堂网| 91国内精品久久久久| 国产系列电影在线播放网址| 老司机精品视频一区二区| 在线视频观看你懂的| 国产精品伦一区二区三区视频| 老师我好爽再深一点的视频| 亚洲国产精华液| 亚洲天堂视频在线观看免费| 中文字幕4区| 亚洲私人影吧| 欧美在线中文| 九色在线网站| 最近免费中文字幕大全免费第三页| 久久久久久77777| 国产在线激情视频| 午夜免费福利在线观看| 国产精品久久麻豆| 99在线免费视频| www.香蕉视频在线观看| 亚洲男人的天堂成人| 在线观看av资源网| 亚洲精品国自产拍在线观看| 日本h片在线观看| 天天爱天天色| 在线免费观看黄色av| 欧美日韩亚洲国内综合网| 免费在线高清av| 国产二区视频| 另类视频在线| 国产精品美女一区二区视频| av亚洲男人天堂| 国产精品自产拍在线网站| 精品极品三级久久久久| 日本高清中文字幕| 国产麻豆免费| 亚洲国产成人综合| 国产中文字幕在线观看| 国产福利免费观看| 九九精品视频在线观看九九| 国产麻豆麻豆| 日本在线视频www鲁啊鲁| 尤物在线网址| 啪啪免费视频一区| 91在线网址| 国产一级免费在线观看| 青青草视频在线免费观看| 国产经典av| 国产主播福利在线| eeuss影院网站免费观看| 最近中文字幕mv免费高清在线| 亚洲综合在线不卡| 国产高清在线视频| 成在线人视频免费视频| www.毛片| 天天草天天爽| 亚洲国产日韩在线人成电影| 国产白浆在线| 97视频免费| 91午夜视频| 国产大学生粉嫩无套流白浆| 国产九九在线| 最近中文字幕mv2018在线高清| 久热中文字幕精品视频在线| 亚洲国产日韩成人综合天堂| 国产天堂资源| 国产日产一区二区三区| 天天操天天射天天插| 国产乱妇乱子| 国产一卡2卡3卡4卡网站免费| 男人天堂v视频| 激情丁香在线| 国产一级免费看| 国产成人高清精品| 精品美女在线观看视频在线观看 | 成年人在线观看| 激情视频国产| 国产九九九九| 国产欧美日韩第一页| 136福利第一导航国产在线| 91久久精品国产性色| 99热99re6国产在线播放| 亚洲va国产日韩欧美精品色婷婷| 亚洲欧美小说国产图片| www.三区| 国产女王在线**视频| 国产丝袜在线观看视频| 国产欧美一区二区三区小说| 精品国产高清自在线一区二区三区| 国产精品入口免费麻豆| 中文视频在线| 超碰在线观看免费版| 国产一卡2卡3卡免费网站| 中文在线观看视频| 激情丁香婷婷| 中文在线视频观看| 国产中文在线观看| 国产国产人免费人成免费视频| 中文在线有码| 国产一二三区在线观看| av中文网站| 国产第一页在线视频| 欧美韩日国产| 国产精品久久久高清免费| 秋霞av在线| 国产视频xxx| 精品中文字幕不卡在线视频|