📄 jnotepad.java
字号:
package lesson8;import java.awt.*;import java.awt.event.*;import java.awt.print.*;import java.awt.datatransfer.*;import java.io.*;import javax.swing.*;import javax.swing.event.*;import javax.swing.text.*;public class JNotepad extends JPanel{JTextArea jta = new JTextArea("", 24, 40); //框架JScrollPane jsp = new JScrollPane(jta);JMenuBar jmb = new JMenuBar(); //菜单栏JMenu file = new JMenu("文件");JMenu edit = new JMenu("编辑");JMenu help = new JMenu("帮助");JMenu search = new JMenu("查询");JMenuItem jmi;JToolBar toolBar = new JToolBar(); //工具栏Clipboard clipbd = getToolkit().getSystemClipboard();//与本机剪切工具使用PrinterJob prtMe = PrinterJob.getPrinterJob(); //打印String text = "";public JNotepad() //构造函数JNotepad{class newL implements ActionListener //新建纯文档{public void actionPerformed(ActionEvent e){jta.setDocument(new PlainDocument());}}class openL implements ActionListener //打开{public void actionPerformed(ActionEvent e){JFileChooser fc = new JFileChooser();int returnVal = fc.showDialog(JNotepad.this, "Open file");if(returnVal == JFileChooser.APPROVE_OPTION){String file = fc.getSelectedFile().getPath();if(file == null){return;}try{Reader in = new FileReader(file);char[] buff = new char[4096];int nch;while((nch = in.read(buff, 0, buff.length)) != -1){jta.setDocument(new PlainDocument());jta.append(new String(buff, 0, nch));}}catch (IOException io){System.err.println("IOException: " + io.getMessage());}}else{return;}}}class saveL implements ActionListener //保存{public void actionPerformed(ActionEvent e){JFileChooser fc = new JFileChooser();int returnVal = fc.showSaveDialog(JNotepad.this);if(returnVal == JFileChooser.APPROVE_OPTION){String savefile = fc.getSelectedFile().getPath();if(savefile == null){return;}else{String docToSave = jta.getText();if(docToSave != null){FileOutputStream fstrm = null;BufferedOutputStream ostrm = null;try{fstrm = new FileOutputStream(savefile);ostrm = new BufferedOutputStream(fstrm);byte[] bytes = null;try{bytes = docToSave.getBytes();}catch(Exception e1){e1.printStackTrace();}ostrm.write(bytes);}catch(IOException io){System.err.println("IOException: " +io.getMessage());}finally{try{ostrm.flush();fstrm.close();ostrm.close();}catch(IOException ioe){System.err.println("IOException: " +ioe.getMessage());}}}}}else{return;}}}class pageSetupL implements ActionListener{public void actionPerformed(ActionEvent e){prtMe.printDialog();}}class printL implements ActionListener{public void actionPerformed(ActionEvent e){try{prtMe.print();}catch(Exception ew){}}}class exitL implements ActionListener //退出{public void actionPerformed(ActionEvent e){System.exit(0);}}class copyL implements ActionListener //复制{public void actionPerformed(ActionEvent e){String selection = jta.getSelectedText();StringSelection clipString = new StringSelection(selection);clipbd.setContents(clipString, clipString);}}class cutL implements ActionListener //剪切{public void actionPerformed(ActionEvent e){String selection = jta.getSelectedText();StringSelection clipString = new StringSelection(selection);clipbd.setContents(clipString, clipString);jta.replaceRange("", jta.getSelectionStart(),jta.getSelectionEnd());}}class pasteL implements ActionListener //暂停{public void actionPerformed(ActionEvent e){Transferable clipData = clipbd.getContents(JNotepad.this);try{String clipString =(String)clipData.getTransferData(DataFlavor.stringFlavor);jta.replaceRange(clipString,jta.getSelectionStart(), jta.getSelectionEnd());}catch(Exception ex){}}}class deleteL implements ActionListener //删除{public void actionPerformed(ActionEvent e){String selection = jta.getSelectedText();jta.replaceRange("", jta.getSelectionStart(),jta.getSelectionEnd());}}class selectAllL implements ActionListener //选择{public void actionPerformed(ActionEvent e){jta.selectAll();}}class findL implements ActionListener //查询{public void actionPerformed(ActionEvent e){String find = "";find = JOptionPane.showInputDialog("Find what: ");}}class findNextL implements ActionListener{public void actionPerformed(ActionEvent e){}}class aboutL implements ActionListener //关于{public void actionPerformed(ActionEvent e){JOptionPane.showMessageDialog(null,"小杜");}}class jtaL implements ActionListener{public void actionPerformed(ActionEvent e){}}file.add(jmi = new JMenuItem("新建", KeyEvent.VK_N));jmi.addActionListener(new newL());file.add(jmi = new JMenuItem("打开", KeyEvent.VK_O));jmi.addActionListener(new openL());file.add(jmi = new JMenuItem("保存", KeyEvent.VK_S));jmi.addActionListener(new saveL());file.addSeparator();file.add(jmi = new JMenuItem("页面布局", KeyEvent.VK_G));jmi.addActionListener(new pageSetupL());file.add(jmi = new JMenuItem("打印", KeyEvent.VK_P));jmi.addActionListener(new printL());file.addSeparator();file.add(jmi = new JMenuItem("退出", KeyEvent.VK_X));jmi.addActionListener(new exitL());edit.add(jmi = new JMenuItem("复制", KeyEvent.VK_C));jmi.addActionListener(new copyL());edit.add(jmi = new JMenuItem("剪切", KeyEvent.VK_T));jmi.addActionListener(new cutL());edit.add(jmi = new JMenuItem("暂停", KeyEvent.VK_P));jmi.addActionListener(new pasteL());edit.add(jmi = new JMenuItem("删除", KeyEvent.VK_D));jmi.addActionListener(new deleteL());edit.addSeparator();edit.add(jmi = new JMenuItem("全选", KeyEvent.VK_A));jmi.addActionListener(new selectAllL());search.add(jmi = new JMenuItem("查找", KeyEvent.VK_F));jmi.addActionListener(new findL());search.add(jmi = new JMenuItem("查找下一个", KeyEvent.VK_N));jmi.addActionListener(new findNextL());help.add(jmi = new JMenuItem("关于", KeyEvent.VK_A));jmi.addActionListener(new aboutL());setLayout(new BorderLayout());file.setMnemonic(KeyEvent.VK_F);jmb.add(file);edit.setMnemonic(KeyEvent.VK_E);jmb.add(edit);search.setMnemonic(KeyEvent.VK_S);jmb.add(search);jmb.add(Box.createHorizontalGlue());help.setMnemonic(KeyEvent.VK_H);jmb.add(help);toolBar.setFloatable(true);addButtons(toolBar);add(jmb, BorderLayout.NORTH);add(toolBar, BorderLayout.CENTER);add(jsp, BorderLayout.SOUTH);jta.getCaret().setVisible(true);jta.setCaretPosition(0);}public static void main(String args[]){JFrame f = new JFrame();JNotepad applet = new JNotepad();f.setTitle("小杜记事本");f.setBackground(Color.lightGray);f.getContentPane().add(applet, BorderLayout.CENTER);f.addWindowListener(new appCloseL());f.setSize(800, 500);f.setBackground(Color.BLUE);f.setLocation(100,100);f.setVisible(true);f.pack();}protected void addButtons(JToolBar toolBar){JButton button = new JButton(new ImageIcon("images/new.gif"));button.setToolTipText("新建");button.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){jta.setDocument(new PlainDocument());}});toolBar.add(button);JButton button1 = new JButton(new ImageIcon("images/open.gif"));button1.setToolTipText("打开");button1.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){JFileChooser fc = new JFileChooser();int returnVal = fc.showDialog(JNotepad.this, "打开文件");if(returnVal == JFileChooser.APPROVE_OPTION){String file = fc.getSelectedFile().getPath();if(file == null){return;}try{Reader in = new FileReader(file);char[] buff = new char[4096];int nch;while((nch = in.read(buff, 0, buff.length)) != -1){jta.setDocument(new PlainDocument());jta.append(new String(buff, 0, nch));}}catch (IOException io){System.err.println("IOException: " + io.getMessage());}}else{return;}}});toolBar.add(button1);JButton button2 = new JButton(new ImageIcon("images/save.gif"));button2.setToolTipText("保存");button2.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){JFileChooser fc = new JFileChooser();int returnVal = fc.showSaveDialog(JNotepad.this);if(returnVal == JFileChooser.APPROVE_OPTION){String savefile = fc.getSelectedFile().getPath();if(savefile == null){return;}else{String docToSave = jta.getText();if(docToSave != null){FileOutputStream fstrm = null;BufferedOutputStream ostrm = null;try{fstrm = new FileOutputStream(savefile);ostrm = new BufferedOutputStream(fstrm);byte[] bytes = null;try{bytes = docToSave.getBytes();}catch(Exception e1){e1.printStackTrace();}ostrm.write(bytes);}catch(IOException io){System.err.println("IOException: " +io.getMessage());}finally{try{ostrm.flush();fstrm.close();ostrm.close();}catch(IOException ioe){System.err.println("IOException: " +ioe.getMessage());}}}}}else{return;}}});toolBar.add(button2);JButton button3 = new JButton(new ImageIcon("images/copy.gif"));button3.setToolTipText("复制");button3.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){String selection = jta.getSelectedText();StringSelection clipString = new StringSelection(selection);clipbd.setContents(clipString, clipString);}});toolBar.add(button3);JButton button4 = new JButton(new ImageIcon("images/cut.gif"));button4.setToolTipText("剪切");button4.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){String selection = jta.getSelectedText();StringSelection clipString = new StringSelection(selection);clipbd.setContents(clipString, clipString);jta.replaceRange("", jta.getSelectionStart(),jta.getSelectionEnd());}});toolBar.add(button4);JButton button5 = new JButton(new ImageIcon("images/paste.gif"));button5.setToolTipText("暂停");button5.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){Transferable clipData = clipbd.getContents(JNotepad.this);try{String clipString =(String)clipData.getTransferData(DataFlavor.stringFlavor);jta.replaceRange(clipString,jta.getSelectionStart(), jta.getSelectionEnd());}catch(Exception ex){}}});toolBar.add(button5);JButton button6 = new JButton(new ImageIcon("images/about.gif"));button6.setToolTipText("关于软件");button6.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){JOptionPane.showMessageDialog(null,"小杜");}});toolBar.add(button6);}protected static final class appCloseL extends WindowAdapter{public void windowClosing(WindowEvent e){System.exit(0);}}}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -