黑馬程序員——Java基礎---GUI

-----------android培訓java培訓、java學習型技術博客、期待與您交流!------------ 

概述

1、GUI:GraphicalUser Interface,即圖形用戶界面,用於計算機與用戶交互的一種方式。

2、計算機與用戶交互的兩種方式:GUI和CLI

        GUI: Graphical User Interface,圖像化界面交互,圖形用戶接口,用圖形方式,來顯示計算機操作界面,方便直觀。

        CLI: Command LineUser Interface,命令行用戶接口,即常見的Dos命令行操作,須記住一些命令,操作不直觀。

3、java.Awt包和javax.Swing包。

        java.Awt包:Abstract Window Toolkit,即抽象窗口工具包。要調用本地系統方法實現功能,說明對平臺有一定的依賴性,跨平臺性較弱,屬重量級控件。

        javax.Swing包:在AWT的基礎上建立的一套圖形界面系統,其中提供了更多的組件,且完全由java實現,增強了移植性,屬輕量級控件。

 

繼承關係圖

 

Button 按鈕   textcomponen 文本組件,包括文本框與文本區域

label  標籤  作用:用於封裝文字 checkbox  複選框

window 窗口 panel 面板

frame框架 dialog  對話框

filedialog 文件對話框  負責文件的選取和保存

Container:爲容器,是一個特殊的組件,該組件中可以通過add方法添加其他組件進來。

Container常用子類:Window   Panel(面板,不能單獨存在。)

Window常用子類:Frame  Dialog

 

佈局管理器

1、佈局:容器中的組件排列方式

2、常見的佈局管理器:

        1)FlowLayout:流式佈局管理器。從左向右排列,是Panel默認的佈局管理器,控件默認居中,但是可以設置。

 

        2)BorderLayout:邊界式佈局管理器,東南西北中的排列方式,是Frame的默認佈局管理器。若沒有指定組件的東南西北的話,組件就會以最大面積填充窗體,因爲組件是默認居中的,添加新組件就會被覆蓋如果窗體中只有一個組件,將會覆蓋整個窗體。

 

        3)GridLayout:網格式佈局管理器,規則的矩陣

 

        4)CardLayout:卡片式佈局管理器,即選項卡

 

        5)GridBayLayout:網格包佈局管理器,非規則矩陣

3、如果存在多種佈局方式,如何創建窗體界面呢?步驟:

        1)先將窗體Frame進行大區域的劃分,設置其佈局管理器,加入面板Panel

        2)將組件加入Panel,設置面板的佈局管理器。

 

簡單的窗體創建過程

1、創建Frame窗體:

        Frame f = new Frame("my Frame");//可設置標題,即窗體名字

2、對窗體進行基本設置:如大小,位置,佈局等:

        f.setSize(int wight,int hight);//窗體大小設置

        f.setLocation(int x,int y);//窗體顯示位置設置,橫縱座標

        f.setBounds(int x,int y,int wight,int hight),也可以直接用這個方法對大小和位置設置

        f.setLayout(Layout layout),參數爲指定的佈局管理器,如FlowLayout

3、定義組件:

       Button b = new Button(“my Button”);//可設置組件的名稱

4、將組件通過窗體的add方法添加到窗體中:

        f.add(b);//將按鈕組件添加進窗體

5、讓窗體顯示:

        f.setVisible(boolean b);//通過設置參數是true還是false是否顯示窗體

演示用例:

import java.awt.*;

class AwtDemo{

public static void main(String[] args){

Frame f = new Frame("my awt");//創建窗體,默認邊界式佈局

//基本設置,長和寬,第一個爲橫座標,第二位爲縱座標

f.setSize(500400);

//設置本地位置,窗口彈出位置

f.setLocation(300,200);

//設置佈局管理

f.setLayout(new FlowLayout());

//設置按鈕

Button b = new Button("");

//加入窗體

f.add(b);

f.setVisible(true);//

System.out.ptintln("Hello World!");

 

}

}

事件監聽機制

用戶對組件的操作,就是一個事件,那麼產生事件的組件就是事件源。

接收並處理事件,與用戶進行交互的行爲就是事件處理器。這些處理方式都封裝在監聽器中

 

就如同開密碼鎖,爲了安全,密碼鎖上安裝了報警裝置,只要鎖被砸就會把鎖事件通知保安

那麼保安就有相應的處理方式

如果鎖沒有被砸,而是密碼輸入錯誤,那麼報警裝置也會將鎖事件通知保安,保安也會處理方式

 

那麼鎖就是事件源,報警裝置就是監聽器,可以用來監聽引發事件的動作。但必須要註冊到鎖上,否則鎖被砸保安就不知道

對於每一種動作都有不同的處理方式

 

 

 

        1)事件源(組件):awt或swing包中的那些圖形界面組件

        2)事件(Event):每一個事件源都有自己特有的對應事件和共性事件

        3)監聽器(Listener):將可觸發某一事件的動作(不只一個動作),都封裝到偵聽器中。

        4)事件處理:引發事件後的處理方式。

  ddWindowListener(WindowLisener l)

添加指定的窗口偵聽器,以此窗口就收窗口事件

 

WindowLisener接口,用於接收窗口事件的偵測器窗口,常用方法如下:

windowActivated(WindowEvent e)

Window設置爲活動Window時調用

windowClosed(WindowEvent e)

因對窗體調用dispose而將其關閉時調用

windowClosing(WindowEvent e)

用戶試圖從窗口的系統菜單中關閉窗口時調用

windowDeactivated(WindowEvent e)

Window不再是活動Window時調用

windowDeiconified(WindowEvent e)

窗口從最小化狀態變成正常狀態時調用

windowIconified(WindowEvent e)

窗口從正常狀態變爲最小化狀態時調用

windowOpened(WindowEvent e)

窗口首次變爲可見時調用 

java.awt.event包中的WindowAdapter實現了WindowLisener接口,並複寫了其中說有方法。接收窗口事件的抽象適配器類。此類中的方法爲空。複寫,但沒複寫內容此類存在的目的是方便創建偵聽器對象。

使用說明

        組成的前三個在java中都已將定義好了,直接獲取其對象來用即可,我們需要做的就是對產生的動作進行處理。

步驟:

1、創建Frame窗體,一般在沒有設置佈局時,會默認使用邊界式佈局

rame f = new Frame("");

2、對窗體進行基本設置

比如大小、位置、佈局等

f.setSize(橫座標,縱座標);

3、定義組件

Button b = new Button("");

4、將組件通過窗體的add方法添加到窗體中

f.add(b);

5、讓窗體顯示,通過setVisible(true)來完成

f.setVisible(true);

演示用例:

import java.awt.*;

class AwtDemo{

public static void main(String[] args){

Frame f = new Frame("my awt");//創建窗體,默認邊界式佈局

//基本設置,長和寬,第一個爲橫座標,第二位爲縱座標

f.setSize(500400);

//設置本地位置,窗口彈出位置

f.setLocation(300,200);

//設置佈局管理

f.setLayout(new FlowLayout());

//設置按鈕

Button b = new Button("確定");

//加入窗體

f.add(b);

//關閉窗體

//f.addWindowListener(new MyWin())

f.addWindowListener(new WindowAdapter()){

public void windowClosing(WindowEvent e){

//System.out.println("關閉");

System.exit(0);

}

//窗體前置

public void windowActivated(WindowEvent e){

System.out.println("激活");

}

public void windowOpened(WindowEvent e){

System.out.println("打開");

}

});

f.setVisible(true);//

System.out.ptintln("Hello World!");

}

}

class MyWin extends WindowAdapter{

public void windowClosing(WindowEvent e){

System.exit(0);

}

}

/* 

需求:讓窗體的關閉功能實現

       讓按鈕也具備退出程序的功能 

*/ 

import java.awt.*;

import java.awt.event.*;

class FrameDemo{

//定義該圖形中所需的組件的引用

private Frame f;

private Button but;

//初始構造函數 

FrameDemo(){

init();

}

//窗體創建與功能實現  

public void init(){

//實例化組件 

f = new Fame("my frame");

 

//frame進行基本設置

f.setBounds(300,100,600,500);

f.setLayout(new FlowLayout());

 

but = new Button("my button");

 

//將組件添加到frame

f.add(but);

 

//加載一下窗體上的事件

myEvent(but);

 

//顯示窗體

f.setVisible(true);

 

}

//註冊事件 

private void myEvent(){

//窗體的關閉功能  

f.addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e){

System.exit(0);

}

});

//讓按鈕具備退出程序的功能

/*

按鈕就是事件源。

那麼選擇哪個監視器呢?

通過關閉窗體事例瞭解到,想要知道哪個組件具備什麼樣的特有監聽器。

需要查看該組件對象的功能。

按鈕支持特有監聽addActionListener動態監聽

*/

but.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

System.out.println("退出");

System.exit(0);

}

});

}

public static void main(String[] args){

new FrameDemo();

}

}

鼠標活動事件

/*

常用方法:

 void moiuseClicked(MouseEvent e)

鼠標按鍵在組件上單擊(按下並釋放)時調用

 void moiuseEntered(MouseEvent e)

鼠標進入到組件上時調用

 void moiuseExited(MouseEvent e)

鼠標離開組件時調用

 void moiusePressed(MouseEvent e)

鼠標按鍵在組件上按下時調用

 void moiuseReleased(MouseEvent e)

鼠標按鈕在組件上釋放時調用

*/

import java.awt.*;

import java.awt.event.*;

class MouseEvent{

//定義該圖形中所需的組件的引用

private Frame f;

private Button but;

 

MouseEvent(){

init();

}

 

public void init(){

f = new Fame("my frame");

 

//frame進行基本設置

f.setBounds(300,100,600,500);

f.setLayout(new FlowLayout());

 

but = new Button("my button");

 

//將組件添加到frame

f.add(but);

 

//加載一下窗體上的事件

myEvent(but);

 

//顯示窗體

f.setVisible(true);

 

}

private void myEvent(){

f.addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e){

System.exit(0);

}

});

//活動監聽

but.addActionListener(new ActionListener(){

public void actionPerformed(ActionListener(){

System.out.println("action ok");

}

});

//判斷單擊

but.addMouserListener(new MouseAdapter(){

private int count =1;

private int clickCount = 1;

public void mouseEntered(MouseEvent e){

System.out.println("my button"+count++);

}

//點擊

public void mouseClicked(MouseEvent e){

System.ou.println("點擊動作"+clickCount++);

}

//雙擊判斷

public void mouseClicked(MouseEvent e){

if (e.getClickCount()==2){

System.ou.println("點擊動作"+clickCount++);

 

}

}

});

}

class {

public static void main(String[] args){

new MouseEvent();

}

}

鍵盤活動事件

/*

常用方法:

void keyPressed(KeyEvent e)

按下某個鍵時調用此方法

void keyReleased(KeyEvent e)

釋放某個鍵

void keyTyped(KeyEvent e)

鍵入某個鍵

*/

import java.awt.*;

import java.awt.event.*;

class {

public static void main(String[] args){

}

}

 

class MouseAndKeyEvent{

//定義該圖形中所需的組件的引用

private Frame f;

private Button but;

private TextField tf;

 

MouseAndKeyEvent(){

init();

}

 

public void init(){

f = new Fame("my frame");

 

//frame進行基本設置

f.setBounds(300,100,600,500);

f.setLayout(new FlowLayout());

 

but = new Button("my button");

//文本框

tf = new TextField(10);

 

//將組件添加到frame

f.add(but);

f.add(tf);

 

//加載一下窗體上的事件

myEvent(but);

 

//顯示窗體

f.setVisible(true);

 

}

private void myEvent(){

//限制文本框中只能輸入數字

tf.addKeyListener(new KeyAdapter(){

public void keyPressed(KeyEvent e){

int code = e.getKeyCode()

if (code>KeyEvent.VK_0&&code<KeyEvent.VK_9){

System.out.println(code+"....是非法的");

e.consume();//不會按照默認的方式處理此方式

}

f.addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e){

System.exit(0);

}

});

//活動監聽

but.addActionListener(new ActionListener(){

public void actionPerformed(ActionListener(){

System.out.println("action ok");

}

});

//but添加一個鍵盤監聽

but.addKeyListener(new KeyAdapter(){

public void keyPressed(KeyEvent e){

//esc結束

if (e.getKeyCode()==KeyEvent.VK_ESCAPE){

System.exit(0);

}

//System.ou.println(e.getKeyChar()+"..."+e.getKeyCode());//鍵與對應的碼值

//System.ou.println(KeyEvent.getKeyText(e.getKeyCode())+"..."+e.getKeyCode());//根據鍵獲取值,可以識別shift等鍵

}

});

//組合鍵

but.addKeyListener(new KeyAdapter(){

public void keyPressed(KeyEvent e){

if (e.isControlDown()&&e.getKeyCode()==KeyEvent.VE_ENTER){

System.out.println("ctrl+enter is run");

}

}

});

}

 

應用

對話框:Dialog

        何時需要產生對話框:此對象時需要在調用時,才創建對象。如:當在誤操作的時候,就需要出現提示錯誤信息的對話框,此時才創建的這個對象。

DialogFrame owner,String title, boolean modal)

構造一個最初不可見的Dialog,它帶有指定的所以所有者Frame,標題和模式

演示用例:

列出指定目錄下的內容,當輸入的路徑不正確時,給出錯誤提示信息。

import java.awt.*;

import java.awt.event.*;

import java.io.*;

class MyWindowDemo{

 //定義所需組件引用  

private Frame f;

private TextField tf;

private Button but;

private TextArea ta;

 

private Dialog d;

private Label lab;

private Button okBut;

//構造函數

MyWindowDemo(){

init();

}

//窗體基本設置於功能實現

public void init(){

f = new Frame("my window");

f.setBounds(300,100,600,500);

f.setLayout(new FlowLayout());

 

tf = new TextField(60);

 

but = new Button("轉到");

 

ta = new TextArea(25,70);//25,70

 

d = new Dialog(f,"提升信息-self",true);//模式爲true,對話框不操作,窗體操作不了

d.setBounds(400,200,240,150);

lab = new Label();

okBut = new Button("確定");

//添加組件 

d.add(lab);

d.add(okBut);

 

f.add(tf);

f.add(but);

f.add(ta);

//窗體事件 

myEvent();

//窗體顯示 

f.setVisible(true);

}

private void myEvent(){

//“跳轉”按鈕事件 

okBut.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){

d.setVisible(false);

}

});

//窗體關閉功能 

d.addWindowListener(new WindowAdapter){

public void windowClosing(WindowEvent e){

d.setVisible(false);

}

});

//回車跳轉

tf.addKeyListener(new KeyAdapter(){

public void keyPressed(KeyEvent e){

showDir();

}

});

//按鈕跳轉

buf.addActionListener(new ActionListener(){

showDir();

}

};)

f.addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e){

System.exit(0);

}

});

}

private void showDir(){

String dirPath = tf.getText();//返回String類型的文本

File dir = new File(dirPath);//ta.setText(text);//轉到

//判斷輸入的路徑是否存在,且是否是文件夾 

if (dir.exists()&&dir.isDirectory()){

tf.setText("");//清空文本區中的內容

String[] names = dir.list();

for (String name:names ){

ta.append(name+"\r\n");

}else{

String info = "您輸入的信息:"+dirPath+"是錯誤的。請重新輸入!";

lab.setText(info);

d.setVisible(true);

}

}

        對列出指定目錄內容示例的功能增強。


菜單:Menu

1、菜單繼承關係

       

2、說明

        1)Menu:菜單,繼承MenuItem;有右三角的圖標存在,可添加Menu和MenuItem

        2)MenuBar:菜單欄,可添加菜單和菜單條目。一般先創建菜單欄,再創建菜單。

        3)MenuItem:菜單條目,也稱菜單項,無右三角的圖標存在,是最終的菜單項。

        4)菜單的事件處理和組件一樣,可以對類型爲MenuItem和Menu的對象這個事件源添加活動監聽ActionListener,並進行相關的事件處理。

        5)通過setMenuBar()方法,將菜單添加到Frame中。

3、用到方法

MenuBar菜單欄

該框架的setMenuBar方法可以是該菜單欄與Frame對象關聯

 

MenuItem  add(MenItem)

將指定的菜單項添加到此菜單

演示用例:

import java.awt.*;  

import java.awt.event.*;  

  

class MyMenuDemo   

{  

    //定義組件引用  

    private Frame f;  

    private MenuBar mb;  

    private Menu m,subMenu;  

    private MenuItem closeItem,subItem;  

    //構造函數  

    MyMenuDemo()  

    {  

        init();  

    }  

//窗體設置與功能實現   

    public void init()  

    {  

        //窗體設置  

f = new Frame("my window");  

        f.setBounds(300,100,500,600);  

        f.setLayout(new FlowLayout());  

      

        mb = new MenuBar();//創建菜單條  

        m = new Menu("文件");//創建菜單  

        subMenu = new Menu("子菜單");//菜單下面的子菜單  

  

        subItem = new MenuItem("子條目");//子菜單包含的菜單條目  

        closeItem = new MenuItem("退出");//菜單包含的條目  

          

//菜單添加菜單組件  

        subMenu.add(subItem);  

        m.add(subMenu);  

        m.add(closeItem);  

        mb.add(m);  

        //窗體添加菜單組件  

        f.setMenuBar(mb);  

        //窗體上事件  

        myEvent();  

        //窗體顯示  

        f.setVisible(true);  

    }  

    private void myEvent()  

    {  

        //關閉菜單具備關閉事件  

        closeItem.addActionListener(new ActionListener()  

        {  

            public void actionPerformed(ActionEvent e)  

            {  

                System.exit(0);  

            }  

        });  

        //窗體關閉功能  

        f.addWindowListener(new WindowAdapter()  

        {  

            public void windowClosing(WindowEvent e)  

            {  

                System.exit(0);   

            }  

        });  

    }  

      

    public static void main(String[] args)   

    {  

        new MyMenuDemo();  

    }  

}  

 

jar包雙擊執行

        既然是圖形化界面,就需要通過圖形化界面的形式運行程序,而不是是用Dos命令行執行,那麼如何通過雙擊程序就執行程序呢?這就需要將程序的class文件打包。

步驟如下:

        1、首先要在java文件中導入一個包,沒有則需創建一個包,如package mymenu;

        2、生成包:通過編譯javac -d c:\myclass MyMenu.java,此時則在c盤下的myclass文件夾下生成了所有的.class文件

        3、在此目錄下新建一個文件,如1.txt或者其他任意名稱任意擴展名的文件都可,然後在其中編輯固定的格式:Main-Class: mymenu.MenuDemo”,只寫引號中的內容。需要需要在冒號後有一個空格,在文件末尾要回車。

        4、編譯:jar -cvfm my.jar 1.txt mymenu即可。如果想添加其他信息,則直接編譯jar即可得出相應的命令

        5、此時雙擊即可執行。

說明:

        1)在固定格式中:

                a、如果無空格:在編譯的時候,就會報IO異常,提示無效的頭字段,即invalidheader field。這說明1.txt在被IO流讀取。

                b、如果無回車:在列表清單.MF中不會加入相應的加載主類的信息,也就是說配置清單的屬性主類名稱不會加載進清單中,也就不會執行。

        2)jar文件必須在系統中註冊,才能運行。註冊方法如下:

        A.對於XP系統:

               a.打開任意對話框,在菜單欄點擊工具按鈕,選擇文件夾選項

               b.選擇新建--->擴展名,將擴展名設置爲jar,確定

               c.選擇高級,可更改圖標,然後點擊新建,命名爲open,

               d.在用於可執行應用程序中,點瀏覽,將jdk下的bin的整個文件路徑添加進來,並在路徑後添加-jar即可。

        B.對於win7系統:

               a.改變打開方式:右擊.jar文件,點擊打開方式,選擇默認程序爲jdk下bin中的javaw.exe應用程序。

               b.修改關聯程序的註冊表:打開註冊表(win+r),找到註冊表路徑\HKEY_CLASSES_ROOT\Aplications\javaw.exe\shell\open\command下的字符串值,右擊點修改,在原路徑的中添加-jar如:"C:\ProgramFiles\Java\jre6\bin\javaw.exe" -jar "%1",注意-jar兩邊要有空格,保存。

              c.雙擊即可執行jar程序,如果仍不能執行,則需下載最新版的jdk。

演示用例:

/* 

練習:利用Menu組件完成一個簡單的記事本程序。 

需求:具有文件菜單,文件中有打開,保存和退出功能。將寫好的程序變爲雙擊可執行的程序。 

*/  

    

import java.awt.*;  

import java.awt.event.*;  

import java.io.*;  

  

class MyMenuText  

{  

    //定義組件引用  

    private Frame f;  

    private TextArea ta;  

    private MenuBar mb;  

    private Menu fileMe;  

    private MenuItem openMi,saveMi,otherSaveMi,closeMi;  

  

    private FileDialog openDia,saveDia;  

  

    private File file;  

  

    //構造函數  

    MyMenuText()  

    {  

        init();  

    }  

  

    //功能實現  

    private void init()  

    {  

        //組件實例化  

        f=new Frame("MyText");  

        ta=new TextArea();  

          

        mb=new MenuBar();  

        fileMe=new Menu("文件");  

        openMi=new MenuItem("打開");  

        saveMi=new MenuItem("保存");  

        otherSaveMi=new MenuItem("另存爲");  

        closeMi=new MenuItem("退出");  

  

        openDia=new FileDialog(f,"選擇打開的文件",FileDialog.LOAD);  

        saveDia=new FileDialog(f,"保存到哪裏",FileDialog.SAVE);  

  

        //基本設置  

        f.setBounds(300,150,600,500);  

  

        //添加組件  

        f.add(ta);  

        f.setMenuBar(mb);  

  

        mb.add(fileMe);  

        fileMe.add(openMi);  

        fileMe.add(saveMi);  

        fileMe.add(otherSaveMi);  

        fileMe.add(closeMi);  

  

        //窗體中事件  

        myEvent();  

  

        //窗體顯示  

        f.setVisible(true);  

    }  

  

    private void myEvent()  

    {  

        //窗體關閉功能  

        f.addWindowListener(new WindowAdapter()  

        {  

            public void windowClosing(WindowEvent e)  

            {  

                System.exit(0);  

            }  

        });  

  

        //打開事件  

        openMi.addActionListener(new ActionListener()  

        {  

            public void actionPerformed(ActionEvent e)  

            {  

                //顯示文件對話窗口  

                openDia.setVisible(true);//------------------  

                String dir=openDia.getDirectory();//獲取目錄  

                String fileName=openDia.getFile();//獲取文件名  

                  

                if(dir==null||fileName==null)//對打開了文件對話框,但未做出操作的處理  

                    return;  

          

                file=new File(dir,fileName);//文件對象  

                try  

                {  

                    ta.setText("");//每打開一個文件時,將文本區的內容清空  

                    //帶緩衝技術的讀取流  

                    BufferedReader br=new BufferedReader(new FileReader(file));  

                    String line=null;//讀一行  

                    while ((line=br.readLine())!=null)  

                    {  

                        //添加到文本區域  

                        ta.append(line+"\r\n");  

                    }  

                    br.close();//關流  

                }  

                catch (IOException ie)  

                {  

                    throw new RuntimeException("文件打開失敗");  

                }  

            }  

        });  

  

        //保存事件  

        saveMi.addActionListener(new ActionListener()  

        {  

            public void actionPerformed(ActionEvent e)  

            {  

                //如果是第一次保存,則顯示文件對話框  

                if(file==null)//-------------  

                {  

                    //顯示文件對話框  

                    saveDia.setVisible(true);//----------------------  

                    String dir=saveDia.getDirectory();  

                    String filename=saveDia.getFile();  

                      

                    if(dir==null||filename==null)//--------------------  

                        return;  

  

                    file=new File(dir,filename);  

                      

                }  

                save();//保存文件方法  

            }  

        });  

          

        //另存爲事件  

        otherSaveMi.addActionListener(new ActionListener()  

        {  

            public void actionPerformed(ActionEvent e)  

            {  

                //不管是不是第一次保存,都顯示文件對話框  

                saveDia.setVisible(true);//----------------------  

                String dir=saveDia.getDirectory();  

                String filename=saveDia.getFile();  

  

                if(dir==null||filename==null)//--------------------  

                    return;  

  

                file=new File(dir,filename);  

  

                save();//保存文件方法  

                //保存時,默認文件對話框位置在打開文件的位置  

                openDia.setFile(file.getName());  

            }  

        });  

  

        //退出事件  

        closeMi.addActionListener(new ActionListener()  

        {  

            public void actionPerformed(ActionEvent e)  

            {  

                System.exit(0);  

            }  

        });  

    }  

      

    //保存文件  

    private void save()  

    {             

        try  

        {  

            //帶緩衝區的寫入流  

            BufferedWriter bw=new BufferedWriter(new FileWriter(file));  

            //獲取文本區域中的內容  

            String text=ta.getText();  

            bw.write(text);//寫入文件中  

            bw.close();//關流  

  

        }  

        catch (IOException ie)  

        {  

            throw new RuntimeException("文件保存失敗");  

        }  

    }  

  

    public static void main(String[] args)   

    {  

        //程序運行  

        new MyMenuText();  

    }  

}  


-----------android培訓java培訓、java學習型技術博客、期待與您交流!------------ 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章