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); } }