日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
JavaSwing用戶(hù)界面設(shè)計(jì):序

Swing是什么

Swing屬于JFC(Java Foundation Classes)的一部分。JFC包含了AWT,Swing,輔助功能API,Java2D,拖放。Swing的出現(xiàn)是為了解決AWT(Abastract Window Toolkit)的移植性和提供更多的企業(yè)級(jí)應(yīng)用程序所需要的功能。Swing建立在核心AWT庫(kù)上,JDK1.2以及更高的版本已經(jīng)包含了Swing庫(kù)。

Swing內(nèi)部采用了MVC體系結(jié)構(gòu)(modle-view-controller)。modle負(fù)責(zé)存放Swing組件的狀態(tài)(數(shù)據(jù)),controller負(fù)責(zé)處理事件,view負(fù)責(zé)繪制圖形。Swing使用了簡(jiǎn)化的MVC變體,controller和view合并稱(chēng)為UI代理。這種設(shè)計(jì)使得一個(gè)modle可以對(duì)應(yīng)多個(gè)UI代理,因此非常靈活。

第一個(gè)簡(jiǎn)單的Swing組件

我的這個(gè)Swing組件非常簡(jiǎn)單,只是一個(gè)toolbar。參考下面的實(shí)現(xiàn)代碼:

 
 
 
 
  1. package test1;  
  2. import java.awt.*;  
  3. import java.awt.event.*;  
  4. import javax.swing.*;  
  5. /**  
  6. *  
  7. * @author root  
  8. */ 
  9. public class ToolbarFrame extends Frame{  
  10. /** Creates a new instance of ToolbarFrame */ 
  11. public ToolbarFrame() {  
  12. super("My Toolbar(Swing)");//通過(guò)調(diào)用基類(lèi)Frame的構(gòu)造函數(shù)初始化標(biāo)題欄文字  
  13. setSize(450,250);  
  14. addWindowListener(new WindowAdapter()  
  15. {  
  16. public void windowClosing(WindowEvent e)  
  17. {  
  18. System.exit(0);  
  19. }  
  20. });  
  21. }  

注意紅色代碼是創(chuàng)建了一個(gè)內(nèi)部類(lèi),該類(lèi)是WindowAdapter的子類(lèi),并且重寫(xiě)了虛函數(shù)windowClosing。然后將該類(lèi)的引用交由TollbarFrame管理,通過(guò)方法addWindowListener。

如果沒(méi)有這步,我們的toolbar可以顯示,但是用不會(huì)被關(guān)閉。

現(xiàn)在創(chuàng)建調(diào)用代碼:

 
 
 
 
  1. package test1;  
  2. /**  
  3. *  
  4. * @author root  
  5. */ 
  6. public class Main {  
  7. /** Creates a new instance of Main */ 
  8. public Main() {  
  9. }  
  10. /**  
  11. * @param args the command line arguments  
  12. */ 
  13. public static void main(String[] args) {  
  14. ToolbarFrame toolbar=new ToolbarFrame();  
  15. toolbar.setVisible(true);  
  16. }  

調(diào)用代碼只有兩行,非常簡(jiǎn)單?,F(xiàn)在我們來(lái)看看運(yùn)行的效果,見(jiàn)下圖:

由于沒(méi)有設(shè)置窗口的起始位置,所以默認(rèn)停留在屏幕左上方。

既然我們使用Net Beans來(lái)開(kāi)發(fā)程序,Net Beans向?qū)б部梢詾槲易鐾瑯拥氖虑?。通過(guò)使用newJFrame Form來(lái)創(chuàng)建一個(gè)ToolbarFrame2類(lèi)。我們獲得下面的代碼:

 
 
 
 
  1. package test1;  
  2. /**  
  3. *  
  4. * @authorroot  
  5. */ 
  6. public class ToolbarFrame2 extends javax.swing.JFrame {  
  7. /** Creates new form ToolbarFrame2 */ 
  8. public ToolbarFrame2() {  
  9. initComponents();  
  10. }  
  11. /** This method is called from within the constructor to  
  12. * initialize the form.  
  13. * WARNING: Do NOT modify this code. The content of this method is  
  14. * always regenerated by the Form Editor.  
  15. */ 
  16. //   
  17. private void initComponents() {  
  18. setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);  
  19. javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());  
  20. getContentPane().setLayout(layout);  
  21. layout.setHorizontalGroup(  
  22. layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)  
  23. .addGap(0, 400, Short.MAX_VALUE)  
  24. );  
  25. layout.setVerticalGroup(  
  26. layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)  
  27. .addGap(0, 300, Short.MAX_VALUE)  
  28. );  
  29. pack();  
  30. }//   
  31. /**  
  32. * @param args the command line arguments  
  33. */ 
  34. public static void main(String args[]) {  
  35. java.awt.EventQueue.invokeLater(new Runnable() {  
  36. public void run() {  
  37. new ToolbarFrame2().setVisible(true);  
  38. }  
  39. });  

我們獲得了沒(méi)有標(biāo)題的ToolbarFrame2,并且已經(jīng)可以響應(yīng)關(guān)閉按鈕。

注意,我們的ToolbarFrame2類(lèi)從JFrame派生,而不是Frame。Frame是AWT的類(lèi),而JFrame是Swing提供的類(lèi)。我們應(yīng)該盡量使用Swing類(lèi)。

private void initComponents() 方法的實(shí)現(xiàn)涉及到 GroupLayout類(lèi)等細(xì)節(jié),后面會(huì)逐漸介紹。關(guān)于JFrame類(lèi)的文檔請(qǐng)參考下面的鏈接

http://java.sun.com/docs/books/tutorial/uiswing/components/frame.html

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE)中,使用了類(lèi)WindowConstants的公有靜態(tài)整形常量,這些常量分別代表窗口關(guān)閉時(shí)的行為,具體可以參考

http://java.sun.com/docs/books/tutorial/uiswing/components/frame.html#windowevents。

我們可以通過(guò)調(diào)用JFrame的成員函數(shù)setTitle來(lái)設(shè)置標(biāo)題。

添加控件

在Net Beans IDE中,我們可以使用編輯器進(jìn)行可視化編輯(通過(guò)Design視圖),比如添加一個(gè)JButton。向?qū)槲覀兌x如下變量:

 
 
 
 
  1. // Variables declaration - do not modify  
  2. private javax.swing.JButton jButton1;  
  3. // End of variables declaration 

并且在private void initComponents() 方法中增加下面一行:

 
 
 
 
  1. jButton1 = new javax.swing.JButton(); 

事件處理

所有的Swing類(lèi)以及派生類(lèi)都擁有方法public void addActionListener(ActionListener 。l)

該方法可以添加事件的監(jiān)聽(tīng)者,當(dāng)有事件發(fā)生,Swing組件就會(huì)調(diào)用這些監(jiān)聽(tīng)者的public void actionPerformed(java.awt.event.ActionEvent evt)方法。形成事件回調(diào)。我們可以利用Net Beans為我們創(chuàng)建這些注冊(cè)的代碼。右鍵點(diǎn)擊JButton,然后選擇events->action->actionPerformed,Net Beans將創(chuàng)建私有方法actionPerformed,然后在initComponents方法中增加下面的代碼:

 
 
 
 
  1. jButton1.addActionListener(new java.awt.event.ActionListener() {  
  2. public void actionPerformed(java.awt.event.ActionEvent evt) {  
  3. jButton1ActionPerformed(evt);  
  4. }  
  5. }); 

我們只需要將 我們的處理邏輯寫(xiě)到j(luò)Button1ActionPerformed私有方法中就可以響應(yīng)事件了。

如果我們有兩個(gè)JButton控件,Net Beans將為我們創(chuàng)建兩個(gè)私有方法,并且創(chuàng)建兩個(gè)繼承自ActionListener的內(nèi)部類(lèi),確保不會(huì)互相干擾。請(qǐng)看下面的實(shí)例代碼:

 
 
 
 
  1. private void initComponents() {  
  2. jButton1 = new javax.swing.JButton();  
  3. jButton2 = new javax.swing.JButton();  
  4. setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);  
  5. jButton1.setText("Button1");  
  6. jButton1.addActionListener(new java.awt.event.ActionListener() {  
  7. public void actionPerformed(java.awt.event.ActionEvent evt) {  
  8. jButton1ActionPerformed(evt);  
  9. }  
  10. });  
  11. jButton2.setText("Button2");  
  12. jButton2.addActionListener(new java.awt.event.ActionListener() {  
  13. public void actionPerformed(java.awt.event.ActionEvent evt) {  
  14. jButton2ActionPerformed(evt);  
  15. }  
  16. }); 

ActionEvent對(duì)象能夠提供很多的信息,請(qǐng)參考文檔:http://java.sun.com/javase/6/docs/api/java/awt/event/ActionEvent.html。

原文鏈接:http://yangyou230.iteye.com/blog/1307786

【編輯推薦】

  1. 用Swing制作精美的圖層疊加圖
  2. 簡(jiǎn)述Java圖形用戶(hù)界面設(shè)計(jì)(Swing)
  3. Effective Java 創(chuàng)建和銷(xiāo)毀對(duì)象
  4. Java編碼及網(wǎng)絡(luò)傳輸中的編碼問(wèn)題
  5. 探討:Java中刪除數(shù)組中重復(fù)元素

網(wǎng)站欄目:JavaSwing用戶(hù)界面設(shè)計(jì):序
網(wǎng)頁(yè)路徑:http://www.dlmjj.cn/article/codscii.html