📄 notebook.java
字号:
/* * Class.java * * Created on 2005年2月27日, 下午1:51 */ import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*; import javax.swing.text.*; import java.io.*; import java.awt.datatransfer.*; import javax.swing.text.rtf.RTFEditorKit;import java.util.*;/** * * @author Administrator */public class NoteBook extends JPanel{ private JTextPane jta=new JTextPane(); private JScrollPane jsp=new JScrollPane(jta); private JMenuBar jmb=new JMenuBar(); private JMenu file=new JMenu("文件"); private JMenu edit=new JMenu("编辑"); private JMenu view=new JMenu("视图"); private JMenu help=new JMenu("帮助"); private Clipboard clipbd = getToolkit().getSystemClipboard(); private JMenuItem jmi; public int enternum,changeflag=0 ; private String openFile,saveFile; private javax.swing.Timer timer=new javax.swing.Timer(180000,new Updat()); private String[] keyWord={"abstract","boolean","break","byte","case","catch","char","class", "const","continue","default","do","double","else","extends","final", "finally","float","for","goto","if","implements","import","instanceof", "int","interface","long","native","new","package","private","protected", "public","return","short","static","strictfp","super","swich", "synchronized","this","throw","throws","transient","try","void", "volatile","while"}; private static MutableAttributeSet keyAttr,normalAttr; private StyleContext m_context; private StyledDocument m_doc= jta.getStyledDocument(); public NoteBook() { setLayout(new BorderLayout()); jmb.add(file); jmb.add(edit); jmb.add(view); jmb.add(help); add(jmb, BorderLayout.NORTH); file.add(jmi=new JMenuItem("新建", KeyEvent.VK_N)); jmi.addActionListener(new NewF()); file.add(jmi=new JMenuItem("打开", KeyEvent.VK_O)); jmi.addActionListener(new OpenF()); file.add(jmi=new JMenuItem("保存", KeyEvent.VK_S)); jmi.addActionListener(new SaveF()); file.add(jmi=new JMenuItem("另存为",KeyEvent.VK_F1)); jmi.addActionListener(new LSave()); file.addSeparator(); file.add(jmi=new JMenuItem("退出",KeyEvent.VK_X)); jmi.addActionListener(new ExitF()); edit.add(jmi=new JMenuItem("剪切",KeyEvent.VK_T)); jmi.addActionListener(new CutT()); edit.add(jmi=new JMenuItem("复制",KeyEvent.VK_C)); jmi.addActionListener(new CopyT()); edit.add(jmi=new JMenuItem("粘贴",KeyEvent.VK_P)); jmi.addActionListener(new PasteT()); edit.add(jmi=new JMenuItem("删除",KeyEvent.VK_D)); jmi.addActionListener(new DeleteT()); edit.addSeparator(); edit.add(jmi=new JMenuItem("查找",KeyEvent.VK_F)); jmi.addActionListener(new Find()); edit.add(jmi=new JMenuItem("查找下一个",KeyEvent.VK_N)); jmi.addActionListener(new FindNext()); edit.add(jmi=new JMenuItem("替换",KeyEvent.VK_R)); jmi.addActionListener(new Replace()); edit.addSeparator(); edit.add(jmi=new JMenuItem("全选",KeyEvent.VK_A)); jmi.addActionListener(new SelAll()); view.add(jmi=new JMenuItem("黑体",KeyEvent.VK_F3)); jmi.addActionListener(new SetBold()); view.add(jmi=new JMenuItem("颜色...",KeyEvent.VK_F4)); jmi.addActionListener(new SetColor()); help.add(jmi=new JMenuItem("关于NoteBook",KeyEvent.VK_H)); jmi.addActionListener(new Help()); add(jsp, BorderLayout.CENTER); jta.addKeyListener(new KeyAction(jta)); m_context = new StyleContext(); m_doc = new DefaultStyledDocument(m_context); jta.setDocument(m_doc); keyAttr = new SimpleAttributeSet(); StyleConstants.setForeground(keyAttr, Color.blue); StyleConstants.setBold(keyAttr,true); normalAttr = new SimpleAttributeSet(); StyleConstants.setForeground(normalAttr, Color.black); StyleConstants.setBold(normalAttr,false); timer.start(); } protected static final class Close extends WindowAdapter { public void windowClosing(WindowEvent e) { System.exit(0); } } //新建文件 class NewF implements ActionListener { public void actionPerformed(ActionEvent e) { if(changeflag==0) { jta.setText(""); return; } if(saveFile==null||changeflag==1) { String message="文件未保存!是否保存此文件?"; int result=JOptionPane.showConfirmDialog(null,message); if (result == JOptionPane.YES_OPTION) { if(saveFile==null) { SaveF savefile=new SaveF(); savefile.actionPerformed(e); } else { Updat update=new Updat(); update.actionPerformed(e); } jta.setText(""); saveFile=null; changeflag=0; } if (result == JOptionPane.NO_OPTION) { jta.setText(""); saveFile=null; changeflag=0; } if(result==JOptionPane.CANCEL_OPTION){} } else { jta.setText(""); saveFile=null; changeflag=0; } } } //打开文件 class OpenF implements ActionListener { public void actionPerformed(ActionEvent e) { if(changeflag==1) { String message="文件未保存!是否保存此文件?"; int result=JOptionPane.showConfirmDialog(null,message); if (result == JOptionPane.YES_OPTION) { if(saveFile==null) { SaveF savefile=new SaveF(); savefile.actionPerformed(e); } else { Updat update=new Updat(); update.actionPerformed(e); } changeflag=0; } if (result == JOptionPane.NO_OPTION) { changeflag=0; } if(result==JOptionPane.CANCEL_OPTION) { return; } } JFileChooser jfc=new JFileChooser(); int reVal=jfc.showDialog(NoteBook.this,"打开"); if(reVal==JFileChooser.APPROVE_OPTION) { openFile=jfc.getSelectedFile().getPath(); if(openFile==null) { return; } try { Reader in=new FileReader(openFile); jta.read(in,null); } catch(IOException ioe) { System.err.println("IOException: " + ioe.getMessage()); } } else { changeflag=1; return; } String text; text=jta.getText(); TextParse(text); saveFile=openFile; changeflag=0; } //打开文档扫描 public void TextParse(String text) { if(text.length() == 0) return; else { StringTokenizer st = new StringTokenizer(text, "\t,\n,\r,, ,;,(,),[,],{,}, ,"); int start = 0,pst=0; int enterNumber = 0; //文章中回车数目 m_doc.setCharacterAttributes(start, text.length(),normalAttr, true); while(st.hasMoreTokens()) { int i = 0; enterNumber = 0; String data; data = st.nextToken(); if ( data == null) return; for (i = 0; i < keyWord.length; i++ ) { if (data.equals(keyWord[i])) { if(pst==0) { pst=text.indexOf(data); } else pst=text.indexOf(data,pst+data.length()); for(int j=0;j<pst;j++) { if(text.charAt(j)=='\n')enterNumber++; } //设置关键字显示属性 m_doc = jta.getStyledDocument(); jta.getStyledDocument().setCharacterAttributes(pst-enterNumber, data.length(),keyAttr,false); } } } } } } //保存文件 class SaveF implements ActionListener { public void actionPerformed(ActionEvent e) { if(saveFile==null) { JFileChooser jfc = new JFileChooser(); int reVal = jfc.showSaveDialog(NoteBook.this); if(reVal == JFileChooser.CANCEL_OPTION)return; if(reVal == JFileChooser.APPROVE_OPTION) { saveFile = jfc.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 ioe1) { System.err.println("IOException: " + ioe1.getMessage()); } finally { try { ostrm.flush(); fstrm.close(); ostrm.close(); } catch(IOException ioe2) { System.err.println("IOException: " + ioe2.getMessage()); } } } } } else { try { Writer out=new FileWriter(saveFile); jta.write(out); } catch(Exception ex) { System.out.println("Exception:"+ex.getMessage()); } } } changeflag=0; } } //另存为 class LSave implements ActionListener { public void actionPerformed(ActionEvent e) { String lsaveFile; JFileChooser jfc = new JFileChooser(); int reVal = jfc.showSaveDialog(NoteBook.this); if(reVal == JFileChooser.APPROVE_OPTION) { lsaveFile = jfc.getSelectedFile().getPath(); if(lsaveFile == null) { return; } else { String docToSave = jta.getText(); if(docToSave != null) { FileOutputStream fstrm = null; BufferedOutputStream ostrm = null; try { fstrm = new FileOutputStream(lsaveFile); ostrm = new BufferedOutputStream(fstrm); byte[] bytes = null; try { bytes = docToSave.getBytes(); } catch(Exception e1) { e1.printStackTrace(); } ostrm.write(bytes); } catch(IOException ioe1) { System.err.println("IOException: " + ioe1.getMessage()); } finally { try { ostrm.flush(); fstrm.close(); ostrm.close(); } catch(IOException ioe2) { System.err.println("IOException: " + ioe2.getMessage()); } } } } } } } //退出 class ExitF implements ActionListener { public void actionPerformed(ActionEvent e) { if(changeflag==0) { timer.stop(); System.exit(0); return; } if(saveFile==null||changeflag==1) { String message="文件未保存!是否保存此文件?"; int result=JOptionPane.showConfirmDialog(null,message); if (result == JOptionPane.YES_OPTION) { if(saveFile==null) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -