久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

JAVA Swt初識(shí)

 sven_ 2015-01-21

JAVA Swt
進(jìn)入java C/S世界

很多人以為swt與swing是同一種東西,。其實(shí)不然,。

awt/swing是sun公司發(fā)布的jdk里的,,擁有較強(qiáng)的跨平臺(tái)性,。
swt/jface是開(kāi)發(fā)eclipse用的一系列框架,后來(lái)單獨(dú)分離出來(lái),??缙脚_(tái)性相對(duì)差,這里只是說(shuō)相對(duì)于linux/unix而言,。因?yàn)樗欢ǔ绦蛏侠昧藈indows,。它是IBM在AWT和Swing上經(jīng)過(guò)優(yōu)化開(kāi)發(fā)出的新的GUI。也許你很難想像用SWT開(kāi)發(fā)出eclipse,,然后又在eclipse上開(kāi)發(fā)Swt應(yīng)用吧,。


AWT的優(yōu)勢(shì)在于,,簡(jiǎn)單,穩(wěn)定,,兼容于任何一個(gè)java版本,。也支持GUI組件的自動(dòng)disposal。同時(shí)也是線程安全的,。在AWT 中的圖形用戶界面是通過(guò)本地方法來(lái)實(shí)現(xiàn)的,,每個(gè)AWT 方法都有一個(gè)與其對(duì)應(yīng)的本地方法,稱為peer,。由于平臺(tái)無(wú)關(guān)性的需要,,AWT 所能夠?qū)崿F(xiàn)的功能是各種不同操作系統(tǒng)的圖形庫(kù)所提供的功能的交集。


而SWING,,則是為了解決AWT的很多缺點(diǎn),。SWING 提供許多比AWT更好的屏幕顯示元素。它們用純Java寫成,,所以同Java本身一樣可以跨平臺(tái)運(yùn)行,,這一點(diǎn)不像AWT。 它們是JFC的一部分,。 它們支持可更換的觀感和主題(各種操作系統(tǒng)默認(rèn)的特有主題),,然而不是真的使用原生平臺(tái)提供的設(shè)備,而是僅僅在表面上模仿它們,。這意味著你可以在任意平臺(tái)上使用JAVA支持的任意觀感,。 輕量級(jí)元件的缺點(diǎn)則是執(zhí)行速度較慢,優(yōu)點(diǎn)就是可以在所有平臺(tái)上采用統(tǒng)一的行為,。


Eclipse項(xiàng)目用稱為SWT的的圖形庫(kù)和工具包取代了Java標(biāo)準(zhǔn)中的AWT和Swing,。SWT直接調(diào)用了操作系統(tǒng)的圖形庫(kù),從而使得Java應(yīng)用程序的Look & Feel 與操作系統(tǒng)的習(xí)慣完全一致,;更為重要的是,,對(duì)本地方法的直接調(diào)用大幅度的提高了基于SWT 的Java應(yīng)用程序的運(yùn)行速度。SWT 的缺點(diǎn)主要在于兩點(diǎn):(1) 不是Java語(yǔ)言標(biāo)準(zhǔn),;和(2) 支持的平臺(tái)太少,。

AWT的含義

SWT(Standard Widget Toolkit) Standard Widget Toolkit是一個(gè)開(kāi)源的GUI編程框架,與AWT/Swing有相似的用處,,著名的開(kāi)源IDE-eclipse就是用SWT開(kāi)發(fā)的,。 在SWT之前,Sun已經(jīng)提供了一個(gè)跨平臺(tái)GUI開(kāi)發(fā)工具包AWT (Abstract Windowing Toolkit). 雖然AWT框架也使用的是原生窗口部件(native widgets),,但是它一直未能突破LCD問(wèn)題,。LCD問(wèn)題導(dǎo)致了一些主要平臺(tái)特征的遺失。

Swing的含義

Swing是一個(gè)用于開(kāi)發(fā)Java應(yīng)用程序用戶界面的開(kāi)發(fā)工具包,。它以抽象窗口工具包(AWT)為基礎(chǔ)使跨平臺(tái)應(yīng)用程序可以使用任何可插拔的外觀風(fēng)格,。Swing開(kāi)發(fā)人員只用很少的代碼就可以利用Swing豐富,、靈活的功能和模塊化組件來(lái)創(chuàng)建優(yōu)雅的用戶界面。 工具包中所有的包都是以swing作為名稱,,例如javax.swing,javax.swing.event

公司項(xiàng)目需要做一個(gè)java swt程序監(jiān)控服務(wù)器硬件,,網(wǎng)絡(luò)等各方面狀態(tài)。用sigar實(shí)現(xiàn)的,。目前已經(jīng)差不多了,。然后還需要做一個(gè)客戶端程序安裝在運(yùn)維程序的電腦上,一旦服務(wù)器狀態(tài)出現(xiàn)異常,,可以及時(shí)處理,。沒(méi)辦法。只好用java再做一個(gè)swt程序來(lái)實(shí)現(xiàn),。其實(shí)我覺(jué)得用c#實(shí)現(xiàn)可能更容易,。呵呵。不過(guò)公司要求的是用java,,就來(lái)初識(shí)java swt吧,。至于為何選用swt原因很簡(jiǎn)單,它提供了很多的圖形化界面,。目前好像ORACLE的netBeans也有這種功能了,。

開(kāi)發(fā)SWT需要安裝Matisse這個(gè)插件,網(wǎng)上找了好久才找到,。新版的myeclipse是集成了的。不過(guò)我的是myeclipse6.5,。

Matisse4 for myeclipse下載地址:

matisse4 for myeclipse

安裝后可以看到new時(shí)多了一個(gè)選項(xiàng),。選擇一個(gè)Application或者Jframe都可以。點(diǎn)擊finish完成,。

如果點(diǎn)擊finish完成后沒(méi)有生成相應(yīng)的.form和.java文件,。很可能是沒(méi)有導(dǎo)入相關(guān)的2個(gè)jar包。swing-layout.jar和absoluteLayout.jar,。導(dǎo)入即可,。

我們可以右側(cè)導(dǎo)航圖看到相應(yīng)的GUI。

如圖:

熟悉C#的朋友,,發(fā)現(xiàn)他還真像C#,!。呵呵,。至少我這種走過(guò)來(lái)的人這么認(rèn)為,。。,。有圖形控件可以拖動(dòng),,屬性,,事件等。

點(diǎn)擊source可以查看源碼,。發(fā)現(xiàn)入口函數(shù)就是一個(gè)main方法,。運(yùn)行發(fā)現(xiàn)窗體并不是居中的。我們讓他居中需要修改入口函數(shù)如下:

  1. public static void main(String args[]) {  
  2.         java.awt.EventQueue.invokeLater(new Runnable() {  
  3.             public void run() {  
  4.                 Main main = new Main();  
  5.                 main.setVisible(true);  
  6.                 main.setLocationRelativeTo(null);//null,,則此窗口將置于屏幕的中央  
  7.                 main.jButton1ActionPerformed(null);  
  8.             }  
  9.         });  
  10.     }  

我們可以發(fā)現(xiàn)還有另外一個(gè)main方法,,他是初始化組件的。包括初始化前,,正在初始化和初始化后,,默認(rèn)只有initCompent()初始化組件。

如果我們想要在它之前加入一個(gè)系統(tǒng)拖盤可以這么干:

  1. TrayIcon icon;  
  2.     public static boolean flag = true;  
  3.   
  4.     private void init() {  
  5.   
  6.         String root = System.getProperty("user.dir");  
  7.         System.out.println(root);  
  8.         icon = new TrayIcon(Toolkit.getDefaultToolkit().createImage(  
  9.                 root + "/resource/img/1.jpg"));  
  10.         if (SystemTray.isSupported()) {// 判斷系統(tǒng)是否托盤  
  11.             // 創(chuàng)建一個(gè)托盤圖標(biāo)對(duì)象  
  12.   
  13.             // 創(chuàng)建彈出菜單  
  14.             PopupMenu menu = new PopupMenu();  
  15.             // 添加一個(gè)用于退出的按鈕  
  16.             MenuItem item = new MenuItem("EXIT");  
  17.             MenuItem item2 = new MenuItem("STOP");  
  18.   
  19.             item.addActionListener(new ActionListener() {  
  20.                 public void actionPerformed(ActionEvent e) {  
  21.                     try {  
  22.                         System.exit(0);  
  23.                     } catch (Exception ex) {  
  24.                         System.exit(0);  
  25.                     }  
  26.   
  27.                 }  
  28.             });  
  29.             item2.addActionListener(new ActionListener() {  
  30.                 public void actionPerformed(ActionEvent e) {  
  31.                     try {  
  32.                         flag = false;  
  33.                         jButton1.setEnabled(true);  
  34.                         jButton2.setEnabled(false);  
  35.                         setInfo("\n程序已經(jīng)正常停止");  
  36.                     } catch (Exception ex) {  
  37.                         System.exit(0);  
  38.                     }  
  39.   
  40.                 }  
  41.             });  
  42.   
  43.             menu.add(item);  
  44.             menu.add(item2);  
  45.             // 添加彈出菜單到托盤圖標(biāo)  
  46.             icon.setPopupMenu(menu);  
  47.             icon.setToolTip("信息收集器正在運(yùn)行中......");  
  48.             // --托盤單事件   
  49.             icon.addMouseListener(new MouseAdapter() {  
  50.                 public void mouseClicked(final MouseEvent e) {  
  51.                     if (e.getButton() == MouseEvent.BUTTON1) {  
  52.                         setVisible(true);  
  53.                         setState(Frame.NORMAL);  
  54.                     }  
  55.                 }  
  56.   
  57.             });  
  58.   
  59.             SystemTray tray = SystemTray.getSystemTray();// 獲取系統(tǒng)托盤  
  60.             try {  
  61.                 tray.add(icon);  
  62.             } catch (AWTException e1) {  
  63.                 e1.printStackTrace();  
  64.             }// 將托盤圖表添加到系統(tǒng)托盤  
  65.         }  
  66.   
  67.     }  

  1. /** Creates new form Main */  
  2.     public Main() {  
  3.         init();  
  4.         initComponents();  
  5.         initOther();  
  6.     }  
  7.   
  8.     private void initOther() {  
  9.         String root = System.getProperty("user.dir");  
  10.         System.out.println(root);  
  11.         Toolkit tk = Toolkit.getDefaultToolkit();  
  12.         this.setIconImage(tk.createImage(root + "/resource/img/1.jpg"));  
  13.     }  


如何判斷你是單擊,?中擊,?右擊?

  1. private void button1MouseClicked(java.awt.event.MouseEvent evt) {  
  2.         int s=evt.getButton();  
  3.         JOptionPane.showMessageDialog(null, s);  
  4.     }  
  1. evt.getButton()=1返回表示鼠標(biāo)左鍵單擊,,2表示中擊 3表示右鍵單擊  

choice中加入下拉選項(xiàng),,及判斷選擇:

  1. private void choice1ItemStateChanged(java.awt.event.ItemEvent evt) {  
  2.         String str=choice1.getSelectedItem();  
  3.         JOptionPane.showMessageDialog(null, str);  
  4.     }  
  5.   
  6.     private void initData() {  
  7.         choice1.add("1");  
  8.         choice1.add("2");  
  9.         choice1.add("3");  
  10.         choice1.add("4");  
  11.     }  


未完。待續(xù),。,。。吃飯睡覺(jué)了,。




    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多