1. 程式人生 > >一個簡單的Java IO流寫的記事本

一個簡單的Java IO流寫的記事本

<pre class="java" name="code" snippet_file_name="blog_20160312_1_2909067" code_snippet_id="1607488">//主要的就是剛學習Java中的GUI和IO流,弄個記事本玩一玩。

public class Notepad extends JFrame implements ActionListener{

	JMenuBar jmb;  //選單欄 
	JMenu jm; //選單
	JMenuItem jmi1,jmi2; //選單項
	JTextArea jta;      //用來寫文字的文字域
	JScrollPane jsp;   // 管理視口、可選的垂直和水平滾動條以及可選的行和列標題視口
	
	public static void main(String[] args) {
		Notepad np = new Notepad();
	}
	
	public Notepad(){
		jmb = new JMenuBar();

		jm = new JMenu("選單(f)");
		jm.setMnemonic('f');  //建立快捷方式Alt+f
		
		jmi1 = new JMenuItem("開啟");
		jmi1.addActionListener(this);
		jmi1.setActionCommand("open");
		
		jmi2 = new JMenuItem("儲存");
		jmi2.addActionListener(this);
		jmi2.setActionCommand("save");
		
		jta = new JTextArea();
		jsp = new JScrollPane(jta);
		
		jm.add(jmi1);
		jm.add(jmi2);
		
		jmb.add(jm);
		
		
		this.setJMenuBar(jmb);
		this.add(jsp);
		
		this.setSize(400, 300);
		this.setLocation(300, 300);
		this.setTitle("記事本");
		this.setVisible(true);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);		
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		if(e.getActionCommand().equals("open")){
			JFileChooser jf = new JFileChooser();   //JFileChooser 為使用者選擇檔案提供了一種簡單的機制
			jf.showOpenDialog(this);   //彈出一個 "Open File" 檔案選擇器對話方塊
			jf.setToolTipText("開啟");   //註冊要在工具提示中顯示的文字
			String path = jf.getSelectedFile().getAbsolutePath();  //返回選中的檔案的絕對路徑
			try {
				BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(path)));
				StringBuffer stb = new StringBuffer();
				String str = "";
				while((str = br.readLine())!=null){ //一行一行的迴圈讀取資料
					stb.append(str+"\r\n");
				}
				jta.setText(stb.toString());  //一定要呼叫toString方法
				br.close();
			} catch (FileNotFoundException e1) {
				e1.printStackTrace();
			} catch (IOException e2) {
				e2.printStackTrace();
			}
		}else if(e.getActionCommand().equals("save")){
			JFileChooser jf = new JFileChooser();
			jf.showSaveDialog(this); //彈出一個 "Save File" 檔案選擇器對話方塊
			jf.setToolTipText("儲存");
			String path = jf.getSelectedFile().getAbsolutePath();
			try {
				BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(path)));
				bw.write(jta.getText());
				bw.close();
			} catch (FileNotFoundException e1) {
				e1.printStackTrace();
			} catch (IOException e2) {
				e2.printStackTrace();
			}
		}		
	}	
}