package demo; import java.awt.event.*; import java.io.*; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.io.Reader; import javax.swing.*; import javax.swing.filechooser.FileNameExtensionFilter; public class TXT extends JFrame { private JMenuBar JMB; private JMenu m1; private JMenu m2; private JMenu m3; private JMenuItem mi1; // 变量名字不能用 123, 后期无法维护 , 从新定义 private JMenuItem mi2; private JMenuItem mi3; private JMenuItem mi4; private JMenuItem mi5; private JMenuItem mi6; private JMenuItem mi7; private JMenuItem mi8; //窗口组件 JFileChooser filechooser = new JFileChooser(); JScrollPane sp = new JScrollPane(); JTextArea ta = new JTextArea(); protected Object desc; public TXT(){ this.setDefaultCloseOperation(TXT.EXIT_ON_CLOSE); sp.getViewport().add(ta); this.getContentPane().add(sp); ta.getText(); JMB = new JMenuBar(); this.setJMenuBar(JMB); //按钮 m1 = new JMenu("文件"); m2 = new JMenu("功能"); m3 = new JMenu("帮助"); JMB.add(m1); JMB.add(m2); JMB.add(m3); mi1 = new JMenuItem("新建"); mi2 = new JMenuItem("保存"); mi3 = new JMenuItem("打开"); mi4 = new JMenuItem("复制"); mi5 = new JMenuItem("粘贴"); mi6 = new JMenuItem("帮助"); mi7 = new JMenuItem("另存为"); mi8 = new JMenuItem("退出"); m1.add(mi1); m1.add(mi2); m1.add(mi3); m1.add(mi7); m1.add(mi8); m2.add(mi4); m2.add(mi5); m3.add(mi6); //添加事件处理 mi1.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent mi1) { if(mi1.getActionCommand().equals("新建")){ //事件监听器是内部类了 不须要这个判断 demo d = new demo(); Thread t = new Thread(d); t.start(); } } }); mi2.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent mi2) { if(mi2.getActionCommand().equals("保存")){ int i = filechooser.showSaveDialog(TXT.this); if(i == JFileChooser.APPROVE_OPTION){ File f = filechooser.getSelectedFile(); FileOutputStream out; try { out = new FileOutputStream(f); out.write(ta.getText().getBytes()); // 试试输入内容不少会不会有问题, 1MB out.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } } }); mi3.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent mi3) { if(mi3.getActionCommand().equals("打开")){ int i = filechooser.showOpenDialog(TXT.this); if(i == JFileChooser.APPROVE_OPTION){ File f = filechooser.getSelectedFile(); try { FileReader fr = new FileReader(f); BufferedReader br = new BufferedReader(fr); String aline = br.readLine(); while(aline != null); ta.append(aline+"/r/n"); fr.close(); br.close(); } catch (FileNotFoundException e1) { e1.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); } } } } }); mi7.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent mi7) { if(mi7.getActionCommand().equals("另存为")){ int i = filechooser.showSaveDialog(TXT.this); if(i == JFileChooser.APPROVE_OPTION){ File f = filechooser.getSelectedFile(); FileOutputStream out; try { out = new FileOutputStream(f); out.write(ta.getText().getBytes()); out.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } } }); mi8.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent mi8) { //是否是要检测下是否保存过。 弹出提示框 if(mi8.getActionCommand().equals("退出")){ System.exit(0); } } }); } public static void main(String[] args){ JFrame t = new TXT(); t.setTitle("记事本"); t.setSize(500, 500); t.setVisible(true); } } //新建窗口端口 class demo implements Runnable{ public void run(){ TXT t = new TXT(); t.setTitle("记事本"); t.setSize(500, 500); t.setVisible(true); } } // 请添加上 其余菜单事件 复制 黏贴...
2017-5-15 18:06:01java
package demo; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.ClipboardOwner; import java.awt.datatransfer.DataFlavor; import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.Transferable; import java.awt.datatransfer.UnsupportedFlavorException; import java.awt.event.*; import java.io.*; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.io.Reader; import javax.swing.*; import javax.swing.filechooser.FileNameExtensionFilter; // 这个有必要继承 ClipboardOwner 吗? public class TXT extends JFrame implements ClipboardOwner { private JMenuBar JMB; private JMenu File; // 用fileMenu, 变量首字母不要用大写,下面同理.你这个File 更系统文件File 都重名了 private JMenu Edit; // 去学习些java 命名规范。 (百度能够查到) private JMenu Help; private JMenu View; private JMenu Ormat; private JMenuItem FileNew; private JMenuItem FileSave; private JMenuItem FileOpen; private JMenuItem EditCopy; private JMenuItem EditPaste; private JMenuItem HelpHelp; private JMenuItem FileSaveAs; private JMenuItem FileQuit; private JMenuItem ViewStatusBar; private JMenuItem OrmatTypeface; Clipboard clb =null; //窗口组件 JFileChooser filechooser = new JFileChooser(); JScrollPane sp = new JScrollPane(); JTextArea ta = new JTextArea(); protected Object desc; public TXT(){ this.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); sp.getViewport().add(ta); this.getContentPane().add(sp); ta.getText(); JMB = new JMenuBar(); this.setJMenuBar(JMB); //按钮 File = new JMenu("文件"); Edit = new JMenu("功能"); Help = new JMenu("帮助"); View = new JMenu("查看"); Ormat = new JMenu("格式"); JMB.add(File); JMB.add(Edit); JMB.add(Help); JMB.add(View); JMB.add(Ormat); FileNew = new JMenuItem("新建"); FileSave = new JMenuItem("保存"); FileOpen = new JMenuItem("打开"); EditCopy = new JMenuItem("复制"); EditPaste = new JMenuItem("粘贴"); HelpHelp = new JMenuItem("帮助"); FileSaveAs = new JMenuItem("另存为"); FileQuit = new JMenuItem("退出"); ViewStatusBar = new JMenuItem("状态栏"); OrmatTypeface = new JMenuItem("字体"); File.add(FileNew); File.add(FileSave); File.add(FileOpen); File.add(FileSaveAs); File.add(FileQuit); Edit.add(EditCopy); Edit.add(EditPaste); Help.add(HelpHelp); View.add(ViewStatusBar); Ormat.add(OrmatTypeface); //添加事件处理 addWindowListener(new WindowListener() { @Override public void windowIconified(WindowEvent arg0) { } @Override public void windowDeiconified(WindowEvent arg0) { } @Override public void windowDeactivated(WindowEvent arg0) { } @Override public void windowClosed(WindowEvent arg0) { } @Override public void windowActivated(WindowEvent arg0) { } @Override public void windowOpened(WindowEvent arg0) { } @Override public void windowClosing(WindowEvent arg0) { // 下面代码跟后面的exit 方法里面的代码重复了, 抽成一个方法,调用. 不要写两个代码如出一辙的 if(ta.getText().equals("")){ System.exit(0); } int it = JOptionPane.showConfirmDialog(TXT.this, "是否保存到D://java程序//实验文件//新建文本文档.txt","结束程序",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE); if(JOptionPane.YES_OPTION == it){ File f = new File("D:\\java程序\\实验文件\\新建文本文档.txt"); try { FileWriter fw = new FileWriter(f); BufferedWriter bw = new BufferedWriter(fw); PrintWriter pw = new PrintWriter(bw); // 为何加一个这个writer pw.print(ta.getText()); // BufferedWriter.write ("xxxx") 就能够了 bw.close(); fw.close(); } catch (IOException e) { e.printStackTrace(); } }else if(JOptionPane.NO_OPTION == it) { System.exit(0); }else if(JOptionPane.CANCEL_OPTION == it){ return; } } }); FileNew.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent mi1) { demo d = new demo(); Thread t = new Thread(d); t.start(); } }); FileSave.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent mi2) { int i = filechooser.showSaveDialog(TXT.this); if(i == JFileChooser.APPROVE_OPTION){ File f = filechooser.getSelectedFile(); FileOutputStream out; try { out = new FileOutputStream(f); out.write(ta.getText().getBytes()); out.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } }); FileOpen.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent mi3) { int i = filechooser.showOpenDialog(TXT.this); if(i == JFileChooser.APPROVE_OPTION){ File f = filechooser.getSelectedFile(); try { FileReader fr = new FileReader(f); BufferedReader br = new BufferedReader(fr); String aline = br.readLine(); while(aline != null); ta.append(aline+"/r/n"); fr.close(); br.close(); } catch (FileNotFoundException e1) { e1.printStackTrace(); } catch (IOException e1) { e1.printStackTrace(); } } } }); FileSaveAs.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent mi7) { int i = filechooser.showSaveDialog(TXT.this); if(i == JFileChooser.APPROVE_OPTION){ File f = filechooser.getSelectedFile(); FileOutputStream out; try { out = new FileOutputStream(f); out.write(ta.getText().getBytes()); out.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } }); FileQuit.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent mi8) { if(ta.getText().equals("")){ System.exit(0); } int it = JOptionPane.showConfirmDialog(TXT.this, "是否保存到D://java程序//实验文件//新建文本文档.txt","结束程序",JOptionPane.YES_NO_CANCEL_OPTION,JOptionPane.QUESTION_MESSAGE); if(JOptionPane.YES_OPTION == it){ File f = new File("D:\\java程序\\实验文件\\新建文本文档.txt"); try { OutputStream out = new FileOutputStream(f); String str = ta.getText(); byte[] buf = new byte[1024*5]; // 这个不对, 你肯定有把内容保存到文件? out.write(buf); out.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }else if(JOptionPane.NO_OPTION == it) { System.exit(0); }else if(JOptionPane.CANCEL_OPTION == it){ return; } } }); EditCopy.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { Clipboard clb = Toolkit.getDefaultToolkit().getSystemClipboard(); StringSelection ss = new StringSelection(ta.getText()); clb.setContents(ss, null); } }); EditPaste.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { Clipboard clb = Toolkit.getDefaultToolkit().getSystemClipboard(); Transferable clbt = clb.getContents(null); if(clbt!=null){ if(clbt.isDataFlavorSupported(DataFlavor.stringFlavor)); String str; try { str = (String)clbt.getTransferData(DataFlavor.stringFlavor); ta.append(str); } catch (UnsupportedFlavorException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } }); } public static void main(String[] args){ JFrame t = new TXT(); t.setTitle("记事本"); t.setSize(500, 500); t.setVisible(true); } @Override public void lostOwnership(Clipboard clipboard, Transferable contents) { } } //新建窗口端口 class demo implements Runnable{ public void run(){ TXT t = new TXT(); t.setTitle("记事本"); t.setSize(500, 500); t.setVisible(true); } }