一個簡單的Java IO流寫的記事本
阿新 • • 發佈:2019-02-14
<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(); } } } }