swing常用類簡單學習

這幾天公司需要做一個通過opc和modbus協議從設備讀取數據的項目,需要做一個小的窗體來對協議進行配置,以前從來沒有用過java中的swing類,只是簡單的聽說過,所以也是一切從頭在網上慢慢搜,比較系統的教程不太容易搜到,都是零碎的一點一點的知識點。接下來我就簡單總結一下我學習swing 的過程。

swing 不需要導入其他的jar包,jdk中直接就有,我最開始學習的時候挺困難的,因爲一點相關圖形界面的開發都沒有做過,我一開始的主要疑問就是佈局問題,事件觸發的問題,相信很多一開始學習swing的都會對這些感到好奇

swing的佈局實際上java中自帶的有很多種,比如AbsoluteLayout 、 FlowLayout等等,這些佈局在網上很容易查到他們的用法,使用這些佈局有一點好處是可以在你想要拉大拉小邊框的時候他可以隨着界面大小改變位置,相當於web開發中的相對位置,我主要使用了沒有佈局的界面,也就是可以自己隨便調整的頁面。

swing開發其實就是相當於容器一層套一層,最外層的是JFrame這個類,這個是最基礎的類,所有窗體的開發都需要繼承或者實例化這個類,JFrame中可以嵌套JPanel這個類,這個類相當於佈局頁面,你可以在這個類中添加你想要的組件,JFrame不可以嵌套JFrame,但是JPanel可以嵌套JPanel,所以組件最好建立在JPanel後再放在JFrame中。

JFrame中常用的方法

frame.setBounds(x, y,width ,height);

前兩個左上角座標,這個方法是設置frame的大小,只是初始大小,並不是設置了就不能放大縮小了

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

設置窗體在關閉的時候默認行爲

frame.setTitle("Modbus Set");

設置窗體的名字

frame.setLayout(null);

設置窗體的佈局,如果你想隨意調整,就可以把佈局設爲null,否則他的默認佈局是BorderLayout

frame.setLocationRelativeTo(null);

使窗口顯示在屏幕中央

frame.add();

這個有很多參數,可以在api上看,簡單的就是添加組件,添加JPanel

這是一些比較簡單常用的frame方法。

JPanel中有很多方法和JFrame中差不多,我需要做的JPanel中用到了局部刷新,因爲有一些東西在JFrame中是不用變的

panel.removeAll();

清除所有的組件

panel.updateUI();

在清除組件後,進行組件添加,添加後再進行更新,就相當於重畫了panel

主要需要學習的還有幾個類,組件的類

JButton 按鈕

JComboBox 下拉框

JTextField 編輯框,一般就是提供給用戶填寫

JLabel 放在界面上顯示信息

JTextArea 大文本顯示框,顯示協議說明什麼之類的

還有很多radio,table,checkbox以及一些組合在一起用的組件,基本都大同小異,一些屬性方法都很相似,在網上和api中說明的也很清楚。

這些基本就屬於給用戶展示的界面上操作的類了,但是我們做應用窗體關鍵的是需要和後臺交互,這些就需要用到事件了,判斷用戶操作,其實就是在java中對組件進行監聽,比如按鈕點擊,下拉框切換,和web開發中的很相似。

主要用到的是一個接口ActionListener

可以通過三種方式來實現監聽事件

1、是通過實現這個接口,在類中重寫他的actionPerformed方法,在這個方法中使用多個if語句對按鈕點擊或者其他事件進行判斷,然後在設置按鈕屬性的時候對此按鈕加入監聽button.addActionListener(this),弊端就是當事件太多時,大量的if會使代碼比較亂,不便於編寫整理

2、通過匿名內部類在每一個按鈕添加監聽事件時直接在addActionListener的參數中編寫匿名內部類,new ActionLisener 同樣在內部類中也是重寫actionPerformed方法

3、每個事件都寫個內部類,看起來比較方便

在actionActionListener方法中需要傳入ActionEvent對象,這個對象有很多事件,在這個方法中編寫事件處理邏輯就可以了。

這裏參考這位大佬
http://blog.csdn.net/chenssy/article/details/7392490

到這裏,首先編寫設計界面按鈕,然後再將監聽和界面結合起來,一個小的應用窗體就可以寫成了。

寫到這裏突然發現爲什麼很少人寫比較系統的swing教程了,一是這個東西一旦稍微瞭解,往後學並不難,網上知識點很好找,二是swing中包含的東西太多了,很多細的東西講再多也講不完,寫到這裏雖然感覺沒寫什麼東西已經非常累了,所以東西還是慢慢來學,不能急於求成。代碼太多,論壇編輯器還不太好用,就不貼代碼了,具體的一些使用細節都可以在網上搜到。我剛入行沒多久,看這個也就半天時間,請各位大佬多多指教

這幾天公司需要做一個通過opc和modbus協議從設備讀取數據的項目,需要做一個小的窗體來對協議進行配置,以前從來沒有用過java中的swing類,只是簡單的聽說過,所以也是一切從頭在網上慢慢搜,比較系統的教程不太容易搜到,都是零碎的一點一點的知識點。接下來我就簡單總結一下我學習swing 的過程。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章