成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Java Swing用戶界面設計:序

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

Swing是什么

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

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

第一個簡單的Swing組件

我的這個Swing組件非常簡單,只是一個toolbar。參考下面的實現(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)");//通過調用基類Frame的構造函數(shù)初始化標題欄文字  
  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)建了一個內部類,該類是WindowAdapter的子類,并且重寫了虛函數(shù)windowClosing。然后將該類的引用交由TollbarFrame管理,通過方法addWindowListener。

如果沒有這步,我們的toolbar可以顯示,但是用不會被關閉。

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

  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. }  

調用代碼只有兩行,非常簡單。現(xiàn)在我們來看看運行的效果,見下圖:

由于沒有設置窗口的起始位置,所以默認停留在屏幕左上方。

既然我們使用Net Beans來開發(fā)程序,Net Beans向導也可以為我做同樣的事情。通過使用newJFrame Form來創(chuàng)建一個ToolbarFrame2類。我們獲得下面的代碼:

  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. // <editor-fold defaultstate="collapsed" desc=" Generated Code ">  
  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(0400, Short.MAX_VALUE)  
  24. );  
  25. layout.setVerticalGroup(  
  26. layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)  
  27. .addGap(0300, Short.MAX_VALUE)  
  28. );  
  29. pack();  
  30. }// </editor-fold>  
  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. });  

 

我們獲得了沒有標題的ToolbarFrame2,并且已經可以響應關閉按鈕。

注意,我們的ToolbarFrame2類從JFrame派生,而不是Frame。Frame是AWT的類,而JFrame是Swing提供的類。我們應該盡量使用Swing類。

private void initComponents() 方法的實現(xiàn)涉及到 GroupLayout類等細節(jié),后面會逐漸介紹。關于JFrame類的文檔請參考下面的鏈接

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

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

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

我們可以通過調用JFrame的成員函數(shù)setTitle來設置標題。

添加控件

在Net Beans IDE中,我們可以使用編輯器進行可視化編輯(通過Design視圖),比如添加一個JButton。向導將為我們定義如下變量:

  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類以及派生類都擁有方法public void addActionListener(ActionListener 。l)

該方法可以添加事件的監(jiān)聽者,當有事件發(fā)生,Swing組件就會調用這些監(jiān)聽者的public void actionPerformed(java.awt.event.ActionEvent evt)方法。形成事件回調。我們可以利用Net Beans為我們創(chuàng)建這些注冊的代碼。右鍵點擊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. }); 

我們只需要將 我們的處理邏輯寫到jButton1ActionPerformed私有方法中就可以響應事件了。

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

  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對象能夠提供很多的信息,請參考文檔:http://java.sun.com/javase/6/docs/api/java/awt/event/ActionEvent.html

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

【編輯推薦】

  1. 用Swing制作精美的圖層疊加圖
  2. 簡述Java圖形用戶界面設計(Swing)
  3. Effective Java 創(chuàng)建和銷毀對象
  4. Java編碼及網絡傳輸中的編碼問題
  5. 探討:Java中刪除數(shù)組中重復元素
責任編輯:林師授 來源: yangyou230的博客
相關推薦

2012-01-16 11:03:09

javaswing

2011-06-01 10:58:57

2009-07-09 13:44:22

Swing動態(tài)界面設計

2011-06-01 10:30:41

用戶界面

2011-04-22 11:01:36

框架布局界面設計Android

2011-05-19 08:49:01

使用片段界面設計Android

2011-04-11 17:25:30

線性布局用戶界面設計Android

2011-04-08 13:58:10

Android界面設計

2011-04-11 17:07:33

布局基礎用戶界面設計Android

2011-04-19 09:19:37

相對布局界面設計Android

2014-11-26 10:42:55

界面設計

2011-06-01 09:31:46

用戶界面設計

2011-03-02 14:03:02

DashboardAndroid用戶界面反例模板

2013-11-27 10:12:11

2011-03-02 10:49:42

DashboardAndroid用戶界面設計模板

2011-12-20 10:42:22

Android應用界面設計

2014-04-03 09:49:20

設計界面設計

2013-12-26 15:46:30

Android開發(fā)Android應用用戶界面設計

2011-06-01 16:50:05

Android ListView

2015-07-09 10:25:45

界面設計UI設計
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 天天操 夜夜操 | 久久人爽爽人爽爽 | 2019天天干天天操 | 久久精品国产亚洲一区二区 | 亚洲精品高清视频在线观看 | 一二区视频| 亚洲三级视频 | 99福利 | 污片在线观看 | 一级黄色片在线看 | 欧美另类视频 | 色频| 精品欧美视频 | 黄色片在线免费看 | 亚洲国产精品久久久久婷婷老年 | 日本三级电影在线观看视频 | 日韩欧美在线免费观看视频 | 亚洲精品456 | 美女黄网站| 91.com视频| 国产熟熟 | 中文字幕成人av | 日本一区二区三区四区 | 亚洲天堂精品一区 | 九九综合九九 | 超碰美女在线 | 精品久久久久久久久久久 | 久久久久久国产精品 | 国产精品成人一区二区三区夜夜夜 | 97色伦网 | 欧美中文字幕 | 91天堂| 久久久激情视频 | 狠狠色狠狠色综合系列 | 亚洲一区视频在线 | 在线播放中文字幕 | 亚洲精品视频在线看 | 日韩精品免费在线观看 | 亚洲精品免费视频 | 日韩一区二区三区视频在线播放 | 精品国产一区二区久久 |