swing怎么给控件添加监听事件来跳转页面?
在swing中,可以通过为控件添加监听器来实现跳转页面的功能。首先,需要创建一个监听器类,并实现相应的监听器接口。
然后,将该监听器对象添加到需要监听的控件上,例如按钮或菜单项。
在监听器中,可以编写代码来实现页面跳转的逻辑,例如使用JFrame创建新的窗口或使用JOptionPane显示消息框。
通过这种方式,当控件被触发时,监听器会相应地执行代码,达到跳转页面的效果。
为什么一提到java的swing和awt组件,大家都不建议学?
早期的java主要是应用在web开发方面,所以从实用的角度出发,确实可以略过AWT和Swing的学习。在移动端开发流行之后,AWT和Swing又成为一个必修的内容了,因为做Android开发如果有一定的AWT基础是比较好的,很多概念是统一的。
为了描述这个问题,我们首先要了解到底什么是AWT,什么是Swing,以及它们与Android开发有什么联系。
AWT与Swing
java语言第一个支持图形界面开发的API就是AWT,在AWT中定义了java图形界面的很多核心概念,所以要了解java的图形界面开发方式一定要从了解AWT开始。下面分别介绍一下AWT中的三个核心概念:容器、组件、布局。
图形容器是存放图形元素的场所和环境,java中把容器分为顶级容器和次顶级容器。顶级容器可以单独显示、次顶级容器不能单独显示。顶级容器的代表是Frame,次顶级容器的代表是Panel。
图形组件是具体的图形应用元素,比如Button(按钮)、TextField(文本框)、Label(标签)、Choice(下拉列表)等等,每一个图形组件代表一种具体的图形应用元素。
布局的作用是安排图形组件在容器中的排列样式,常见的布局方式有BorderLayout、FlowLayout和GridLayout等。其中BorderLayout是Frame的默认布局管理器,FlowLayout是Panel的默认布局管理器。
具体的图形开发根据不同的界面设计采用不同的容器、布局和组件进行搭配组合,复杂的图形组件遵循顶级容器嵌套次顶级容器的方式来完成。
Swing与AWT相比较最大的优点是轻量级方式,Swing不依赖于本地操作系统,所以在样式上能够进行统一。在写法上采用了在AWT的类名基础上增加一个大写的J字符,比如在AWT中的Frame改为JFrame,Button改为JButton等等。
在实际的开发中比较推荐使用Swing的方式,一个原因是Swing的组件在外观上更具备科技感,另一个原因是它占用的资源较AWT更少。
事件处理
说到AWT和Swing一定要说一下图形组件的事件处理方式,Java中的事件处理方式采用了监听的方式,也可以称为“代理”的方式。事件处理类通过实现具体的接口来完成对应的事件处理,比如ActionEvent对应的ActionListener接口;KeyEvent对应的KeyListener接口;MouseEvent对应的MouseListener接口和MouseMotionListener接口;WindowEvent对应的WindowListener接口等等。
这种处理方式让图形界面类和事件处理类进行了有效的分离,在代码处理上更加方便和灵活,在Swing的很多组件中也遵循了MVC的结构,让代码更加容易模块化。
总的来说java中的事件处理并不复杂,通过一定的实验就能完全掌握,所有这并不是学习的负担。
AWT与Android开发的关系
传统的java图形处理方式并不完全适用于Android开发,在Android开发中通常采用配置文件的方式来完成Activity的创建,当然也可以使用代码的方式来完成Android的界面开发。
不管使用哪种方式来创建Android界面,大体的概念是一致的,比如布局、组件等等,只不过名称上有所区别,比如AWT中的Flowlayout对应于Android的布局是LinearLayout等,虽然名称不同但是概念是一致的。
事件处理方式也是大体一致,不过android开发中提供了基于回调的事件处理方式,这种方式在做一些简单的事件处理时比较方便。
所以如果将来要从事Android开发还是建议系统地学习一下AWT或Swing。
关注我,学习更多关于java开发的内容。
首先,Swing和SWT,这两个属于GUI技术,而且是十分成熟的技术,使用SWT+JFace开发的软件,最著名的就是Eclipse,Swing的则可以参考IntellijIDEA和NetBeans,这样你大概就能知道这两个技术都是什么了。
我想,除非你只用命令行或者启动之后就不用管的自动程序,像是Web服务器什么的,只要你想做点什么自己用,这两个都是很好的技术选择。
有人会说web,web虽然启动之后什么都不用管,直接浏览器做界面,很美观,但是web是需要一个浏览器的,而且先启动服务再打开浏览器,总感觉会比较麻烦。
所以如果想做一些小东西,还是要用java的gui框架,其实我不太建议SWT,因为他不好看,而且你的功能多了之后,SWT在一些方面比较麻烦,我感觉Swing比SWT友好很多,而且在窗口比较复杂的时候,SWT可能会卡顿。
对于Swing来说,他的好处是界面灵活,但是皮肤资源比较少,做一个好看的swing界面需要费很大的事情,而且Swing已经不再继续维护了,也就是说,不再有人会修复swing的bug了,也不会提供更多的更新,但是现在看来,swing还是很够用的。
相比于以上两者,如果你想做java的窗口程序,我更建议你尝试一下javafx,他可以使用css做到更为灵活和好看的界面。
至于到底要不要学,这个就看你自己的考虑了,其实公司很少会用java编写窗口程序,更多是编写web服务器(比如Spring什么的),但是觉得学一下也很好 ,他很有意思,也可以做出有用的窗口程序,甚至可以打包,复制给其他计算机使用。
如果你以最快找到工作为目标,你可以暂时跳过这一部分,但是如果不是这样,学一下会更好。