java实现文本编辑器
生活随笔
收集整理的這篇文章主要介紹了
java实现文本编辑器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
利用swing組件JEditText實現復制,粘貼,剪切功能,JEditText組測MouseListener,實現JPopupMenu右鍵彈出菜單,依次為JMenuItem,openButton,saveButton注冊ActionListener,實現點擊事件。
Word.java:
import javax.swing.*; import javax.swing.JComponent.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.awt.Component.*; //文本編輯器,打開.保存.右鍵復制粘貼剪切功能 //java.awt 與 java.awt.event 不是一個類 // public class Word implements MouseListener,ActionListener{JFrame frame;JPopupMenu popMenu;JPanel panel;JEditorPane editText;JButton openButton;JButton saveButton;JMenuItem paste;JMenuItem copy;JMenuItem cut;JMenuBar menuBar;FileDialog fileDialog; String path;//要保存/打開的文件路徑String name;//要保存/打開的文件名 // JMenuItem delete;public static void main(String[] args){Word word=new Word(); } //初始化界面public Word(){frame=new JFrame();panel=new JPanel();editText=new JEditorPane();popMenu=new JPopupMenu();Font font=new Font("宋體",Font.BOLD,20);openButton=new JButton("open");openButton.setFont(font);saveButton=new JButton("save");saveButton.setFont(font);panel.setLayout(null);Color color=new Color(191,210,200);panel.setBackground(color);paste=new JMenuItem("paste");copy=new JMenuItem("copy");cut=new JMenuItem("cut"); // delete=new JMenuItem("delete"); //try{ // String pathString = "/home/zx/邯鄲-劉書鋒太極體.ttf";// Font editFont = Font.createFont(Font.BOLD, new File(pathString)); // editText.setFont(editFont); //}catch(FontFormatException|IOException fe){ // fe.printStackTrace(); //} // Font editFont=new Font ("宋體",Font.BOLD,20);editText.setBackground(color);editText.setBounds(0,40,780,760);editText.setFont(font);editText.addMouseListener(this);popMenu.add(paste);popMenu.add(copy);popMenu.add(cut);openButton.addActionListener(this);saveButton.addActionListener(this); // popMenu.add(delete);paste.addActionListener(this);cut.addActionListener(this);copy.addActionListener(this); // delete.addActionListener(this);//button 設置大小太小會導致顯示不出來文字openButton.setBounds(0,10,80,30);saveButton.setBounds(700,10,80,30);saveButton.setBackground(color);openButton.setBackground(color);panel.add(editText);panel.add(openButton);panel.add(saveButton);panel.add(popMenu);frame.setSize(780,800);frame.getContentPane().add(panel);frame.setVisible(true);frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);} //粘貼public void paste(){System.out.println("paste");editText.paste(); } //復制public void copy(){System.out.println("copy");editText.copy(); } //剪切public void cut(){System.out.println("cut");editText.cut();} //打開文件public void open(){System.out.println("Open file!");fileDialog=new FileDialog(frame,"打開文件",FileDialog.LOAD);fileDialog.setVisible(true);path=fileDialog.getDirectory();name=fileDialog.getFile();read(); } //保存文件public void save(){System.out.println("Save File!");fileDialog=new FileDialog(frame,"保存文件",FileDialog.SAVE);fileDialog.setVisible(true);path=fileDialog.getDirectory();name=fileDialog.getFile();write();} //讀文件public void read(){try{File read=new File(path,name);BufferedReader reader=new BufferedReader(new FileReader(read));//string 類無append()方法StringBuilder builder=new StringBuilder();String line;while((line=reader.readLine())!=null){builder.append(line+"\n");System.out.println(line); }editText.setText(builder.toString());reader.close();//File類無close() }catch(IOException e){e.printStackTrace(); //作用域到括號截至 read 找不到 // read.close(); }} //寫文件public void write(){try{File writeFile=new File(path,name);BufferedWriter write=new BufferedWriter(new FileWriter(writeFile));write.write(editText.getText());write.close(); }catch(IOException e){e.printStackTrace(); // writeFile.close(); }} //鼠標點擊事件public void mouseClicked(MouseEvent e){}public void mouseEntered(MouseEvent e){}public void mouseExited(MouseEvent e){}public void mousePressed(MouseEvent e){if(e.getButton()==MouseEvent.BUTTON3)popMenu.show(e.getComponent(),e.getX(),e.getY()); }public void mouseReleased(MouseEvent e){} //MouseEvent 有什么方法可以返回調用組件的String 或代號? //用ActionEvent的話不能屏蔽右鍵選擇 // class SpecialListener implements MouseListener{public void actionPerformed(ActionEvent e){System.out.println("我要開始比較啦!");// if(e.getButton()==MouseEvent.BUTTON3){String which=e.getActionCommand();switch(which){case "paste":paste();break;case "copy":copy();break;case "cut":cut();break;case "open":open();break;case "save":save();} }} 后續功能:改變字體,插入圖片總結
以上是生活随笔為你收集整理的java实现文本编辑器的全部內容,希望文章能夠幫你解決所遇到的問題。