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 的过程。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章