1. gzyueqian
      13352868059

      用Java快速開發(fā)Linux GUI應(yīng)用

      更新時(shí)間: 2006-03-31 14:08:07來(lái)源: 粵嵌教育瀏覽量:2661

        摘要:

        Linux系統(tǒng)在近幾年發(fā)展神速,但是由于其GUI應(yīng)用程序開發(fā)方法及其標(biāo)準(zhǔn)不統(tǒng)一導(dǎo)致開發(fā)效率低,界面不友好。而Java語(yǔ)言是一種極具潛力的多平臺(tái)應(yīng)用軟件開發(fā)工具,在Linux平臺(tái)上用Java開發(fā)GUI應(yīng)用的技術(shù)目前國(guó)內(nèi)仍極少使用。本文將對(duì)該方法的細(xì)節(jié)、特點(diǎn)及其意義作詳細(xì)論述。

        關(guān)鍵詞:

        Linux、開放源代碼、GUI、Java、組件、容器、布局管理器

        1、為什么要用Java開發(fā)Linux GUI應(yīng)用

        1.1 Linux GUI應(yīng)用開發(fā)現(xiàn)狀

        目前Linux操作系統(tǒng)在市場(chǎng)上呈現(xiàn)一種"叫好不叫座"的局面,在一定的程度上與在其上運(yùn)行的好用的應(yīng)用程序數(shù)量太少有著的密切的關(guān)系。盡管能在Linux上運(yùn)行的應(yīng)用程序已經(jīng)很多,但大多數(shù)都較難安裝與使用,而且很多不是很穩(wěn)定。

        要改善Linux應(yīng)用程序的易用性,大量采用GUI(圖形用戶界面)是一個(gè)必然的趨勢(shì)。但是目前Linux平臺(tái)GUI應(yīng)用程序的開發(fā)仍然不太容易。盡管有不少的開放源碼開發(fā)工具在極力增強(qiáng)其GUI應(yīng)用程序開發(fā)能力,但是由于標(biāo)準(zhǔn)不統(tǒng)一、資料太少等原因很難推廣。Kylix等商業(yè)開發(fā)工具盡管具有大公司的技術(shù)實(shí)力支撐,但由于價(jià)格等因素也難以很快推廣。這種局面不盡快打破,Linux的應(yīng)用就不可能得到很快的普及。

        綜上所述,目前Linux應(yīng)用軟件開發(fā)領(lǐng)域急需一種容易學(xué)習(xí)、成本低、效率高的GUI應(yīng)用程序開發(fā)方法。

        1.2 Java的特點(diǎn)

        自1995年Sun Microsystem推出Java語(yǔ)言以來(lái),Java語(yǔ)言與Java技術(shù)均得到了飛速的發(fā)展。因其強(qiáng)大的網(wǎng)絡(luò)功能、良好的跨平臺(tái)特性、較高的開發(fā)效率成為國(guó)內(nèi)外軟件開發(fā)領(lǐng)域的一種強(qiáng)大工具。

        目前Java程序已經(jīng)能運(yùn)行在從Windows系列、Unix系列、Mac OS系列到Linux等幾乎所有操作系統(tǒng)平臺(tái)上,而且特別重要的是它已經(jīng)能做到"一次編寫,到處運(yùn)行";另一方面,與C++等傳統(tǒng)程序設(shè)計(jì)語(yǔ)言相比,用Java來(lái)開發(fā)GUI應(yīng)用程序的難度已經(jīng)大大降低;加上Java語(yǔ)言所具有的純面向?qū)ο蟆⒕W(wǎng)絡(luò)功能強(qiáng)大等特性,使得Java非常適于用來(lái)編制應(yīng)用軟件。

        1.3 用Java開發(fā)Linux GUI應(yīng)用的優(yōu)點(diǎn)

        正由于Java語(yǔ)言的特點(diǎn)以及Linux操作系統(tǒng)的發(fā)展現(xiàn)狀,使得用Java語(yǔ)言來(lái)開發(fā)Linux平臺(tái)GUI應(yīng)用程序成為了一種很好的方法。
        一方面,用Java語(yǔ)言在Linux平臺(tái)上開發(fā)GUI應(yīng)用程序?qū)τ诹?xí)慣了在Windows平臺(tái)上用Java編程的程序員來(lái)說(shuō)無(wú)須改變編程習(xí)慣。因?yàn)镴ava有良好的跨平臺(tái)特性,在Linux下編程與在Windows下編程沒什么兩樣,如果用純Java編程,則程序中使用的類、屬性、方法等等都不用改變,甚至還可以在Windows下編輯、編譯好Java程序再直接移植到Linux下執(zhí)行。

        另一方面,由于在Linux平臺(tái)上存在大量的的開放源代碼軟件開發(fā)工具,包括用于Java程序開發(fā)的如NetBeans等工具,這樣如果在Linux平臺(tái)上用這些開放源代碼軟件開發(fā)工具進(jìn)行Java軟件開發(fā),其所需的成本可以比在Windows下進(jìn)行開發(fā)低得多。當(dāng)然在Linux下也存在像Borland Jbuilder、IBM Visual Age等商業(yè)Java軟件開發(fā)工具,它們都具有強(qiáng)大的功能、完備的文檔,更有利于在Linux上進(jìn)行Java軟件開發(fā)。

        2、用Java開發(fā)Linux GUI應(yīng)用的基本方法

        2.1 開發(fā)環(huán)境的安裝與配置

        *JDK的安裝

        要Linux平臺(tái)上開發(fā)Java應(yīng)用,基本的方式需要下載一個(gè)JDK,這是由Sun公司免費(fèi)提供的一個(gè)Java軟件開發(fā)包。下載得到的文件一般形如j2sdk1.3-linux.rpm.bin,首先將其拷貝到合適的目錄(如/usr/src或/usr/local等)下,執(zhí)行./j2sdk1.3-linux.rpm.bin,會(huì)產(chǎn)生一個(gè)j2sdk1.3-linux.rpm文件,這是一個(gè)典型的RPM軟件包,再用RPM軟件包管理工具就可直接安裝JDK,在安裝過(guò)程中會(huì)提示許可信息,同意其協(xié)議就可很順利地安裝了。

        *路徑的配置

        為了做到在任意路徑下均可直接執(zhí)行Java編程相關(guān)命令,需要修改/etc/profile文件,在其中設(shè)置路徑。具體方法是在其中加入這樣一行:

      PATH="$PATH/usr/jdk1.3"
      這里/usr/jdk1.3是JDK的安裝路徑。

        2.2 基本開發(fā)過(guò)程

        ①編輯源程序

        在Linux下有很多的程序編輯器軟件,例如在控制臺(tái)下有的Emacs、vi、jed等,在X window下有Xemacs、gedit、kedit等,這些軟件通常都有語(yǔ)法著色、自動(dòng)縮進(jìn)等非常適合于程序編輯的功能。要在Linux系統(tǒng)下開發(fā)Java程序,首先需要用這些編輯器編輯Java源程序。至于具體用哪種編輯器要依個(gè)人的喜好而定,反正可用的軟件很多。

        ②編譯源程序

        正確的編輯好Java源程序后,需要對(duì)其進(jìn)行編譯,以生成字節(jié)碼文件。假定源程序文件名為Test.java,則可用如下形式:
      javac Test.java

        ③調(diào)試運(yùn)行程序

        執(zhí)行守編譯命令后,對(duì)于源程序中的每一個(gè)類,系統(tǒng)將產(chǎn)生一個(gè)字節(jié)碼文件,文件名為對(duì)應(yīng)的類名,而其擴(kuò)展名為class。一般地,每一個(gè)Java程序中應(yīng)該有一個(gè)主類,該類是整個(gè)程序的入口。開發(fā)Java程序的下一步就是調(diào)試運(yùn)行,仍以上面提到的情況為例,運(yùn)行該Java程序的方法為:
      java Test

        事實(shí)上解釋器將解釋執(zhí)行Test.class文件并按其中的調(diào)用解釋執(zhí)行其它字節(jié)碼文件。

        2.3 基本開發(fā)方法

        其實(shí)無(wú)論在什么平臺(tái)下,GUI應(yīng)用程序的基本開發(fā)方法都是相似的。一般都包括下面這樣四個(gè)步驟:

        ①創(chuàng)建容器

        首先要?jiǎng)?chuàng)建一個(gè)GUI應(yīng)用程序,需要?jiǎng)?chuàng)建一個(gè)用于容納所有其它GUI組件元素的載體,Java中稱為容器。典型的包括窗口(Window)、框架(Frame/JFrame)、對(duì)話框(Dialog/JDialog)、面板(Panel/JPanel)等。只有先創(chuàng)建了這些容器,其它界面元素如按鈕(Button/JButton)、標(biāo)簽(Label/JLabel)、文本框(TextField/JTextField)等才有地方放。

        ②添加組件

        為了實(shí)現(xiàn)GUI應(yīng)用程序的功能,為了與用戶交換,需要在容器上添加各種組件/控件。這需要根據(jù)具體的功能要求來(lái)決定用什么組件。例如,如果需要提示信息,可用標(biāo)簽(Label/JLabel);如果需要輸入少量文本,可用文本框(TextField/JTextField);如果需要輸入較多文本,可用文本區(qū)域(TextArea/JTextArea);如果需要輸入密碼,可用密碼域(JPasswordField)等等。

        ③安排組件

        與傳統(tǒng)的Windows環(huán)境下的GUI軟件開發(fā)工具不同,為了更好地實(shí)現(xiàn)跨平臺(tái),Java程序中各組件的位置、大小一般不是以量來(lái)衡量,而是以相對(duì)量來(lái)衡量。例如有時(shí)候,程序的組件的位置是按"東/East"、"西/West"、"南/South"、"北/North"、"中/Center"這種方位來(lái)標(biāo)識(shí)的。因此,在組織界面時(shí),除了要考慮所需的組件種類外,還需要考慮如何安排這些組件的位置與大小。這一般是通過(guò)設(shè)置布局管理器(Layout Manager)及其相關(guān)屬性來(lái)實(shí)現(xiàn)的。事實(shí)上上述按方位來(lái)安排組件就是采用了Java中多種布局管理器里的BorderLayout布局管理器。

        ④處理事件

        為了完成一個(gè)GUI應(yīng)用程序所應(yīng)具備的功能,除了適當(dāng)?shù)匕才鸥鞣N組件產(chǎn)生美觀的界面外,還需要處理各種界面元素事件,以便真正實(shí)現(xiàn)與用戶的交換,完成程序的功能。在Java程序中這一般是通過(guò)實(shí)現(xiàn)適當(dāng)?shù)氖录O(jiān)聽者接口來(lái)完成的。比如如果需要響應(yīng)按鈕事件,就需要實(shí)現(xiàn)ActionListener監(jiān)聽者接口;如果需要響應(yīng)窗口事件,就需要實(shí)現(xiàn)WindowListener監(jiān)聽者接口。

        3、開發(fā)實(shí)例

        下面是一個(gè)在Linux下用Java開發(fā)GUI應(yīng)用程序的實(shí)例。該程序的主要功能是提供一個(gè)用于輸入用戶名與密碼以登錄到某一系統(tǒng)的界面,如果用戶輸入相關(guān)信息后單擊"登錄"按鈕,系統(tǒng)將在窗口的下半部分顯示所輸入的用戶名與密碼信息,如果單擊"退出"按鈕,程序?qū)⑼V惯\(yùn)行。

        本程序沒有提供很強(qiáng)的功能,目的只在于介紹在Linux上用Java編寫GUI應(yīng)用程序的基本方法。以下是程序的源代碼,其中的注釋說(shuō)明了GUI應(yīng)用具體的創(chuàng)建步驟:

      //以下三行用于引入添加組件、設(shè)置布局管理器及處理事件所需的軟件包
      import java.awt.*;
      import java.awt.event.*;
      import javax.swing.*;

      //下行說(shuō)明主類派生自JFrame/框架類,要實(shí)現(xiàn)ActionListener接口以處理動(dòng)作事件
      class LoginFrame extends JFrame implements ActionListener {

      //以下四行用于聲明要加到框架窗口中的所有組件
      JLabel UserLabel,PasswordLabel,UserResult,PasswordResult;
      JTextField User;
      JPasswordField Password;
      JButton LoginButton,ExitButton;
      public LoginFrame() {
      super("登錄");//調(diào)用父類構(gòu)造方法,設(shè)置窗口標(biāo)題
      setSize(300,200);//設(shè)置窗口大小
      getContentPane().setLayout(new GridLayout(5,2,10,10));//設(shè)置布局管理器,將窗口分成5行2列,行、列間保留10個(gè)像素的空白

      //以下8行具體創(chuàng)建組件實(shí)例
      UserLabel=new JLabel("用戶名稱:");
      PasswordLabel=new JLabel("用戶密碼:");
      UserResult=new JLabel(" ");
      PasswordResult=new JLabel(" ");
      User=new JTextField(10);
      Password=new JPasswordField(10);
      LoginButton=new JButton("登錄");
      ExitButton=new JButton("退出");

      //以下兩行設(shè)置用于保存結(jié)果的標(biāo)簽的前景色屬性
      UserResult.setForeground(Color.blue);
      PasswordResult.setForeground(Color.blue);

      //以下兩行為"登錄"按鈕與"退出"按鈕注冊(cè)監(jiān)聽者
      LoginButton.addActionListener(this);
      ExitButton.addActionListener(this);

      //以下八行將所有組件加入到框架窗口中
      getContentPane().add(UserLabel);
      getContentPane().add(User);
      getContentPane().add(PasswordLabel);
      getContentPane().add(Password);
      getContentPane().add(LoginButton);
      getContentPane().add(ExitButton);
      getContentPane().add(UserResult);
      getContentPane().add(PasswordResult);

      //以下一行用于窗口事件監(jiān)聽者注冊(cè)
      addWindowListener(new WindowManager());
      setVisible(true);//使框架窗口變?yōu)榭梢?br />}

      //以下函數(shù)用于處理按鈕動(dòng)作事件
      public void actionPerformed(ActionEvent evt)
      {
      if(evt.getSource()==LoginButton)//表明按下了"登錄"按鈕
      {
      UserResult.setText("用戶名稱:"+User.getText());
      PasswordResult.setText("用戶密碼:"+Password.getPassword());
      }
      else
      if(evt.getSource()==ExitButton)//表明按下了"退出"按鈕
      {
      dispose();
      System.exit(0);
      }
      }

      //以下為系統(tǒng)主函數(shù),是程序的入口
      public static void main(String args[]) {
      LoginFrame mainFrame = new LoginFrame();//創(chuàng)建框架窗口實(shí)例
      }
      }
      class WindowManager extends WindowAdapter//窗口事件監(jiān)聽者類
      {
      public void windowClosing(WindowEvent evt)//本方法用于窗口關(guān)閉事件
      {
      JFrame frame=(JFrame)(evt.getSource());
      frame.dispose();
      System.exit(0);
      }
      }

        4、總結(jié)

        用Java語(yǔ)言來(lái)開發(fā)Linux平臺(tái)的圖形用戶界面應(yīng)用程序,容易理解、容易學(xué)習(xí)、環(huán)境要求低、開發(fā)效率高,而且開發(fā)出來(lái)的應(yīng)用程序可移植性好,可以直接移植到其它平臺(tái)上運(yùn)行而不會(huì)發(fā)生多大變化。這對(duì)于快速開發(fā)Linux GUI應(yīng)用軟件,豐富Linux平臺(tái)應(yīng)用軟件的種類,增強(qiáng)Linux應(yīng)用軟件功能,從而更好地普及Linux系統(tǒng)的應(yīng)用都有巨大的推動(dòng)作用。

      免費(fèi)預(yù)約試聽課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 亚洲精品在看在线观看高清 | 最新国产在线拍揄自揄视频 | 色久桃花影院在线观看 | 亚洲阿v天堂在线 | 日本一道本高清一区二区手机版 | 五月天婷婷丁香综合播播 |