記事本 demo

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);
	}
}
相關文章
相關標籤/搜索