在java學習過程中GUI是一個比較特殊的知識體系(筆者對安卓不是很瞭解),似乎在爲安卓的學習做着準備,本文將將展示一個綜合案例。
創建一個類似於記事本的程序,包含打開與保存功能。
package GUI; import java.awt.FileDialog; import java.awt.Frame; import java.awt.Menu; import java.awt.MenuBar; import java.awt.MenuItem; import java.awt.TextArea; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; public class MyMenu2 { private Frame f;//聲明窗體 private MenuBar bar;//聲明一個bar,表示工具條,比如:文件、Edit、Source等等 private TextArea ta;//文本區域,用於顯示打開文件的內容 private Menu filebMenu;//我的理解是爲上面的bar命名,當然還包含一個添加選項的功能。。。。。。不是很清楚 private FileDialog openDia,SaveDia;//打開新的對話框、與保存時出現的對話框 private MenuItem closeItem,saveItem,openItem;//三個選項,用以觸發關閉,保存,打開事件 private File file; MyMenu2() { init(); } void init(){ f=new Frame("my farme");//窗體的名稱 f.setBounds(300,100,650,600);//setBounds(int x, int y, int width, int height) // f.setLayout(new FlowLayout()); bar=new MenuBar(); filebMenu=new Menu("文件"); openItem=new MenuItem("打開"); saveItem=new MenuItem("保存"); closeItem=new MenuItem("退出"); ta=new TextArea(); filebMenu.add(openItem);//將打開、保存、關閉對話框附加到工具條上 filebMenu.add(saveItem); filebMenu.add(closeItem); bar.add(filebMenu);//將工具條附加到bar上。 f.setMenuBar(bar);//將bar添加到窗體上 f.setVisible(true);//設置窗體可見 openDia=new FileDialog(f,"我要打開",FileDialog.LOAD);//定義一個打開的窗體對象 SaveDia=new FileDialog(f,"我要保存",FileDialog.SAVE);//定義一個打開保存文件的對象 f.add(ta);//將文本附加到窗體 myEvent(); } //定義一些列事件,用於處理不同的請求 public void myEvent(){ /* * 處理打開觸發器 * 1、打開窗體可見 * 2、獲取文件的路徑以及文件名 * 3、讀取文件 * 4、將文件內容顯示到文本區域 * */ openItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { //使打開對話框可見 openDia.setVisible(true); String dirPath=openDia.getDirectory(); String fileName=openDia.getFile(); System.out.println(dirPath+":"+fileName); if(dirPath==null||fileName==null) return; File file=new File(dirPath,fileName); try{ ta.setText(""); BufferedReader br=new BufferedReader(new FileReader(file)); String temp=""; while((temp=br.readLine())!=null){ ta.append(temp+"\r\n"); } br.close(); }catch (Exception ex) { ex.printStackTrace(); } } }); /* * 處理保存觸發器的內容 * */ saveItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if(file==null) { SaveDia.setVisible(true); String dirPath=SaveDia.getDirectory(); String fileName=SaveDia.getFile(); if(dirPath==null||fileName==null) return; file=new File(dirPath,fileName); } try{ BufferedWriter bw=new BufferedWriter(new FileWriter(file)); String text=ta.getText(); bw.write(text); bw.close(); } catch (Exception ex) { throw new RuntimeException(); } } }); /* * 處理關閉觸發器 * */ closeItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { System.exit(0); } }); /* * 處理點擊窗體上的 ‘X' 時的事件 * */ f.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } }); } public static void main(String[] args) { MyMenu2 menu=new MyMenu2(); } }
運行效果: