1. 请简要说明java基于SWING的图形用户界面设计中的事件机制及处理事件的步骤 谢谢了,简要
在编程语言中的事件就是当某组件的状态发生改变的时候通知其它对象发生了这件事,我们在这里只讨论图形界面的组件,有可能是按钮、文本框、菜单、多选等等。
对于通知其它对象的方法一般有两种模式:
1)推模式:状态改变的对象通知其它对象;
2)拉模式:其他对象不停的查看该对象状态是否发生改变。
例如我去小卖部买烟,要一包红塔山,结果小卖部没货了,如果我把我得电话给小卖部老板,烟如果到了请给我打电话,这就是推模式。如果我每隔5分钟来小卖部看一看烟是否到了,这就是拉模式。
Java采用的是推模式,所有监听事件都基于观察者设计模式,所以我们也可以自己给予观察者开发出专用的监听器。
我们JavaGUI程序开发,会经常使用到监听事件,比如一个小计算器的程序,当我们点击“计算”按钮后,希望程序将两个文本框中的数字相加,那么就必需给这个按钮添加事件:
1)按钮的动作触发事件接口是ActionListener接口(不同组件要实现不同功能需要有不同的接口),我们需要写一个事件类,实现ActionListener接口,接口中需要我们实现的方法actionPerformed(ActionEvent e)代表了当按钮事件被触发后需要程序做些什么,比如在这里用System.out.println("你好")在控制台打印你好,这一步就相当于我把电话写在纸上。
2)调用JButton组件实例的addActionListener(ActionListener al)方法(其它事件也有相应的方法)将上面写的事件类注册到这个按钮上,这就相当于我把写着电话的纸条交给小卖部的老板。
上述两部工作完成后,这个按钮的事件就添加完成了,程序运行,点击按钮,动作事件被触发,控制台显示“你好”。
实例:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
/**
* 一个简单的按钮事件教学实例
* @author 米强
*
*/
public class Test extends JFrame {
public Test() {
super("简单的按钮事件实例");
// 一个按钮的实例化对象
JButton button = new JButton("按钮");
// 构造一个事件类,该类实现了ActionListener动作接口
MyActionListener action = new MyActionListener();
// 为这个按钮添加动作事件(匿名类等写法在这里不做讨论)
button.addActionListener(action);
// 将按钮添加到窗体中
getContentPane().add(button);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(300, 200);
setLocationRelativeTo(null);
setVisible(true);
}
public static void main(String[] args) {
new Test();
}
}
/**
* 事件类,实现ActionListener接口
* @author 米强
*
*/
class MyActionListener implements ActionListener {
/**
* 动作事件出发后所执行的方法
*/
public void actionPerformed(ActionEvent e) {
// 在控制台打印“你好”
System.out.println("你好");
}
}
2. JavaSwing图形界面开发与案例详解的内容简介
全书共20章,其中第1~2章主要介绍有关Swing的基础知识,包括Swing的基本概述、如何使用IDE开发Swing程序;第3~15章结合众多实例和问题介绍最常用、最有用的组件及其应用方法,包括标签和按钮组件、布局管理器组件、面板组件、列表框组件、下拉列表框组件、进度条组件、时间组件、滑块组件、分隔条组件、选取器组件、文本组件、窗口组件、对话框组件、JApplet组件、菜单组件、工具条组件、表格组件、树组件以及组件的事件处理机制等;第16~19章主要讲述有关Swing图形开发的其他知识,包括观感器、Swing线程与并发、模型与架构等。第20章通过一个综合实例使读者能够在实际开发中理解和巩固所学知识,从而提高综合应用能力。
《JavaSwing图形界面开发与案例详解》几乎涵盖了目前JavaSwing图形开发必备的所有常用知识,拥有丰富的实例,且这些实例均来自于工程实践,《JavaSwing图形界面开发与案例详解》适合Java程序语言的初学者阅读,也可供具有一定编程经验的初级编程人员参考。
3. JavaSwing图形界面开发与案例详解的作品目录
第1章JavaSwing概述
1.1什么是JavaSwing
1.1.1Swing的发展史
1.1.2Swing的功能
1.1.3Swing的特性
1.2.1avaSwing的包结构
1.3一个JavaSwing程序实例
1.4本章小结
1.5本章习题
第2章如何使用IDE开发Swing程序
2.1如何利用Eclipse开发Swing程序
2.2如何利用JBuilder开发Swing程序
2.3如何利用NetBeans开发Swing程序
2.4本章小结
2.5本章习题
第3章JavaSwirlg组件基础
3.1Swing组件类的层次
3.2Window类
3.2.1顶层容器类和包含层次
3.2.2在顶层容器中添加组件
3.2.3在顶层容器中添加菜单栏
3.3JComponent类
3.4本章小结
3.5本章习题
第4章如何使用标签和按钮组件
4.1如何使用标签
4.2如何使用按钮
4.2.1如何使用普通按钮
4.2.2如何使用单选按钮
4.2.3如何使用复选框
4.2.4按钮组件的实例应用
4.3本章小结
4.4本章习题
第5章如何使用布局管理器组件
5.1布局管理器概述
5.2布局管理器的种类
5.2.1BorderLayout
5.2.2FlowLayout
5.2.3GridLayout
5.2.4GridBagLayout
5.2.5CardLayout
5.2.6BoxLayout
5.2.7SpringLayout
5.2.8GroupLayout
5.3自定义布局管理器的创建
5.4本章小结
5.5本章习题
第6章如何使用面板组件
6.1如何使用JPanel
6.2如何使用JScrollPane
6.3如何使用JSplitPane
6.4如何使用JTabbedPane
6.5如何使用JIntemalFrame
6.6如何使用JLayeredPane
6.7如何使用JRootPane
6.8本章小结
6.9本章习题
第7章Swirlg事件处理机制
7.1Swing事件处理机制概述
7.2Swing中的监听器
7.2.1事件处理的过程与步骤
7.2.2匿名类方式处理事件
7.2.3适配器类
7.2.4Swing所支持的事件监听器
7.2.5窗口事件的处理
7.2.6动作事件的处理
7.2.7焦点事件的处理
7.3本章小结
7.4本章习题
第8章如何使用列表框和下拉列表框组件
8.1如何使用列表框JList
8.1.1使用数组方式创建列表框
8.1.2使用Vector方式创建列表框
8.1.3使用ListModel方式创建列表框
8.1.4列表框选取事件的处理
8.1.5列表框双击事件的处理
8.2如何使用下拉列表框JComboBox
8.2.1使用数组和Vector创建下拉列表框
8.2.2使用ComboBoxModel创建下拉列表框
8.2.3下拉列表框的事件处理
8.3本章小结
8.4本章习题
第9章如何使用进度条、时间、滑块和分隔条组件
9.1如何使用进度条组件JProgressBar
9.2如何使用时间组件Timer
9.3如何使用滑块组件JSlider
9.4如何使用分隔条组件JSeparator
9.5本章小结
9.6本章习题
第10章如何使用选取器组件
10.1如何使用文件选取器JFileChooser
10.1.1如何创建JFileChooser组件
10.1.2如何创建JFileChooser对话框
10.2如何使用颜色选取器JColorChooser
10.3本章小结
10.4本章习题
第11章如何使用文本组件
11.1文本组件概述
11.2如何使用普通文本组件
11.2.1如何使用JTextField
11.2.2如何使用JPasswordField
11.2.3如何使用JFormattedTextField
11.3如何使用文本区组件
11.4如何打印文本组件
11.5本章小结
11.6本章习题
第12章如何使用窗口、对话框和JApplet组件
12.1如何使用窗口组件
12.2如何使用对话框组件
12.3如何使用JApplet组件
12.4本章小结
12.5本章习题
第13章如何使用菜单和工具条组件
13.1如何使用菜单组件
13.1.1菜单组件的类层次
13.1.2如何创建菜单
13.1.3如何处理菜单事件
13.1.4如何响应键盘操作
13.1.5如何使用弹出式菜单
13.1.6如何使用菜单项的启用和禁用功能
13.1.7如何创建复选框菜单项
13.1.8如何创建单选按钮菜单项
13.1.9如何定义个性化菜单
13.1.10菜单组件的常用API
13.2如何使用工具条组件
13.2.1如何创建工具条
13.2.2如何定义个性化工具条
13.2.3工具条组件的常用API
13.3本章小结
13.4本章习题
第14章如何使用表格组件
14.1如何创建一个表格
14.2如何把表格加入容器
14.3如何设置表格列宽
14.4如何创建表格模型
14.5如何监听数据变化
14.6如何使用选择器
14.7如何使用编辑器和渲染器
14.8如何使用自定义渲染器
14.9如何为单元格指定文字说明
14.10如何为表头指定文字说明
14.11如何使用排序和过滤
14.12如何使用组合框作为编辑器
14.13如何使用其他编辑器
14.14如何使用编辑器验证文本
14.15如何打印表格
14.16本章小结
14.17本章习题
第15章如何使用树组件
15.1如何创建树
15.2如何创建数据模型
15.3如何处理节点事件
15.3.1如何处理TreeModelEvent事件
15.3.2如何处理TreeSelectionEvent事件
15.4如何定义个性化树
15.5树组件的常用API
15.6本章小结
15.7本章习题
第16章如何使用Swing观感器
16.1如何设置程序的观感
16.2如何自定义观感器
16.3本章小结
16.4本章习题
第17章Swing与并发
17.1多线程问题
17.2初始线程
17.3事件分派线程
17.4工作线程
17.4.1简单的背景任务
17.4.2拥有临时结果的任务
17.4.3取消背景任务
17.4.4绑定属性和状态方法
17.5本章小结
17.6本章习题
第18章Swing模型架构
18.1传统的MVC设计模式
18.2可分离的模型架构
18.3本章小结
18.4本章习题
第19章Swing的其他特性
19.1如何在Swing组件中使用HTML
19.2如何使用边框
19.2.1如何使用Swing中的边框
19.2.2如何创建自定义边框
19.2.3边框组件的常用API
19.3如何使用图标
19.4如何使用动作
19.5如何支持辅助技术
19.6如何使用焦点子系统
19.7如何使用键绑定
19.8如何在对话框中使用Modality
19.9如何创建SplashScreen
19.10如何使用SystemTray
19.11如何使用Swing拖曳功能和数据传输
19.12本章小结
19.13本章习题
第20章Swirlg实现通讯录系统
20.1通讯录系统的软件框架
20.2通讯录系统的登录系统
20.3通讯录系统的主菜单系统
20.3.1数据库模块的设计
20.3.2信息界面模块的设计
20.3.3功能模块的设计
20.3.4其他模块的设计
20.3.5TabbedPane容器框架的设计
20.3.6主菜单的设计
20.4本章小结
……
4. 利用 Java Swing 实现游戏开发
Swing初体验 对于想学习Swing编程的朋友 我们特地为大家准备了一些小窍门 首先 下载并阅读代码是极有必要的 由于这是一篇关于Swing的教程 所以 我们只是尽可能讲解一些与Swing有关的内容 与Swing无关的内容一般不会涉及 例如算法部分 其次 受篇幅限制 也不可能在这里将每部分代码都写得完完整整的 所以 大家也需要对照完整代码来看 最后 为了使大家更容易把精力集中在Swing学习上 我们也将游戏开发中所需资源放在下载文件中 大家下载后便能够编译运行 看到执行结果 (下载游戏源文件) 顶层容器 什么是顶层容器?当我们使用Java进行图形编程的时候 图在哪里绘制呢?我们需要一个能够提供图形绘制的容器 这个容器就被称为顶层容器 你也可以把它想象成一个窗口 顶层容器是进行图形编程的基础 一切图形化的东西 都必然包括在顶层容器中 在Swing中 我们有三种可以使用的顶层容器 它们分别是:JFrame:用来设计类似于Windows系统中的窗口形式的应用程序 JDialog:和JFrame类似 只不过JDialog是用来设芦旦计对话框 JApplet:用来设计可以在嵌入在网页中的Java小程序 如果需要使用Swing制作一个窗口类程序 我们的代码看起来应该是这样:import javax swing *;public class KyodaiUIextends JFrame {……} 控件 控件是构成应用程序界面的基本元素 按钮 文本框 进度条等 这些都是控件 控件(这里我们只讨论可视化控件)又可以分为容器控件和非容器控件 从字面意义上来理解 容器控件就是能包含其他控件的特殊控件 例如 Java中的JPanel控件就属于容器型控件 我们可以在JPanel中放置按钮 文本框等非容器控件 你甚至可以在JPanel中再放置若干个JPanel控件(值得注意的是 顶层容器也是容器型控件 每一个窗口应用程序中有且只能有一个顶层容器控件 换句话说 顶层容器不能包括在其他的控件中) Java中的容器控件有很多 除刚才提到的JPanel外 还有JTabbedPane JScrollPane等 非容器控件有JButton JLabel JTextField等 如果你需要向某个容器型的控件中添加控件 你可以使用 add(Component p) 方法来实现 如:JPanel panel = new JPanel();JButton button = new JButton();panel add(button); 布局 什么是布局?布局是Java中用来控制控件排列位置的一种界面管理系统 使用过其他可视化编程开发语言的人在初次接触Java界面设计时 总会感觉到Java界面设计很别扭:居然没有提供所见即所得的设置控件坐标的方法!然而 事实证明 Java本身提供的布局管理系统也一样能够出色地完成我们的需要 而且在跨平台时表现得更有优势 常用的布局有:BorderLayout:将界面分割为上下左右以及中间一块区域的管理系统 在BorderLayout布局中 最多你只能放 个控件 如果超过 个控件 建议还是选用其他的布局系统吧 GridLayout:GridLayout是将用户界面切割为棋盘一样的布局管理系统 如果我们要设计一个类似于Windows中自带的计算器软件 GridLayout无疑是最佳选择 FlowLayout:FlowLayout与上述两类布局管理系统不太一样 在FlowLayout中 你不必指定每个控件放在哪 你只需要把控件加入到FlowLayout中 FlowLayout就会根据你添加控件的顺序依次放置控件 如果空间不够 会自动换行 在对这几个布局管理系统有了基本认识后 我们就一起来进入界面设计吧 在仔细观察了QQ游戏中 连连看 的设闭州定后 我们可以发现 整个界面分为三个区 顶部是系统菜单区 占地面积最大的是用户游戏区 另外还有一个用户交互区 每个区域中都由若干控件组成 这么多控件 我们从哪开始入手呢?由于容器控件中可以放置其他控件 因此 我陪态扰们只需要先确定放置的容器控件就可以了 既然已经知道需要使用容器控件的个数 接下来让我们就进入布局管理系统的选择 用GridLayout?似乎有点勉强 用FlowLayout?还有更好的选择吗?对了 我想你一定想到了是BorderLayout吧 如下图 所示 动手之前 大家一定要注意的是 界面的设计要先考虑好尺寸 不管是主程序界面的大小还是每个区域的大小 如果没有设计好合适的尺寸 将来改动起来会十分痛苦 下面便是相应的源程序:import java awt *;import javax swing *;public class KyodaiUI extends JFrame {public KyodaiUI() {this setSize( ); //将窗体的大小设定为 * this setDefaultCloseOperation(JFrame EXIT_ON_CLOSE);this setResizable(false); //窗体不能改变大小this setTitle( 连连看 ); //设置标题JPanel toolBar = new JPanel();toolBar setBackground(Color white);toolBar setPreferredSize(new Dimension( ));JPanel actionPanel = new JPanel(); //新建JPanel型的控件actionPanel setBackground(Color yellow); //设置背景色actionPanel setPreferredSize(new Dimension( )); //设置大小JPanel contentPanel = new JPanel();contentPanel setBackground(Color blue);contentPanel setPreferredSize(new Dimension( ));this getContentPane() add(toolBar BorderLayout NORTH);this getContentPane() add(actionPanel BorderLayout EAST);this getContentPane() add(contentPanel BorderLayout CENTER);}public static void main(String[] args) throws HeadlessException {KyodaiUI kyodaiUI = new KyodaiUI();kyodaiUI show();}}让我们来看看上面这段程序是如何运行的 首先 extends JFrame表明了这是从JFrame中继承过来的 JFrame是最基本的顶层容器控件 实际上 在JDK中 以字母J打头的控件都是Swing控件 然后设置了容器的属性 其中 setDefaultCloseOperation(JFrame EXIT_ON_CLOSE)是用来告诉Java虚拟机 当用户点击窗体右上角的 关闭 按钮时 关闭该窗口进程 如果不这么做的话 你会发现虽然你可以点将窗口关闭 然而程序却没有退出 在接下来的代码中 我们为顶层容器添加了三个Panel容器 要注意的是 在AWT中 我们可以直接写为add(toolBar BorderLayout NORTH) 而在 Swing 中却一定要写成getContentPane() add(toolBar BorderLayout NORTH) 否则程序就会出错 现在大家可以放在编译运行看看 是不是和我的运行结果一样(见图 )? 边框 虽然我们使用了不同前景色来区别不同的区域 然而却没有层次感 加上边框一定会漂亮许多 在Java中 所有以J打头的Swing控件都可以使用setBorder方法来为自己设置边框 边框有很多种 线型 凸起 凹下 空的 你甚至可以自由组合形成个人风格 所有的Border都必须使用javax swing BorderFactory中提供的静态方法来创建 比如:Border border = BorderFactory createBevelBorder(BevelBorder LOWERED new Color( ) new Color( ) new Color( ) new Color( ));现在 我们将toolBar setBackground(Color white)改为toolBar setBorder(border) 立体效果是不是已经出现了?实战??写上自己的大名现在我们已经有了一个能够运行的界面了 虽然它什么也做不了 但是请你别慌 罗马不是一天建成的 现在让我们在菜单区提供一个 关于 菜单 用来显示程序的信息 难道你不想让别人知道你的大名吗?Swing本身就提供了现成的按钮控件JButton 我们只需要创建一个新的按钮:JButton about = new JButton( 关于 );这个按钮该怎么放到菜单区而不是别的地方呢?我们可以加入下面的代码:toolBar add(about);咦 怎么点按钮没有反应?这是因为你还没有告诉程序点击按钮时要做什么事情呢 要为按钮添加事件响应 首先需要使用about addActionListener(this)来告诉程序监听按钮按下时的事件 由于ActionListener是一个程序接口 因此 我们在类的申明的地方也得做一点小小的修改:public class KyodaiUI extends JFrame implements ActionListener { }实现ActionListener接口是为了告诉程序我要进行事件处理了 当然 最后我们得添加响应事件的代码:public void actionPerformed(ActionEvent e) {if (e getSource() == about) {JOptionPane showMessageDialog(this 我的大名 关于 JOptionPane INFORMATION_MESSAGE);return ;}}其中 e getSource() 表示当前触发事件的控件 由于我们的程序中往往会有多个以上的控件 这些控件都有可能产生事件 所以我们必须使用这个方法来找到产生事情的控件 小结 让我们一起来回顾一下今天所学的内容:首先我们了解了顶层容器 也知道了控件分为容器控件和非容器控件 同时还知道使用边框 最后 我们还小小的处理了一下按钮的事件 学而时习之 不亦说乎 就让我留点小小的作业 帮助大家巩固一下今天所学的内容:上面我们添加的按钮在菜单栏的中间 并不美观 lishixin/Article/program/Java/hx/201311/25907
5. java swing怎样开发出漂亮的界面
使用Swing照样可以开发出漂亮的界面.
主要的解决方案如下:
1: 合理的布局 , 搭建好界面的框架. 熟悉常用的布局, 并且布局还可以嵌套布局. 可以实现复杂而又美观的界面.
2: 适当的图片, 按钮, 背景等 都可以使用图片, 当然了为了节省系统资源, 可以使用稍微压缩得比较小的图片.
3: 搭配html , swing支持html简单的标签, 所以美化JButton ,JLabel等组件时, 可以使用一些Html标签. 来美化~~
4: 颜色调和. 界面要美观, 也可以适当的添加颜色, 但是要注意搭配和协调
5: 重写部分组件, swing自带的组件外观, 的确不太让人恭维, 但是我们可以自己根据需求进行重写.
6: 添加动态效果, 我们写javaScript经常是用来做特效的 , 我们可以借鉴一些JS特效的思路, 使用线程, 来给swing组件 等,添加动态的效果 , 比如抖动, 移动 , 滑出 等 特效~
7: 更换皮肤和外观 , 或者使用第三方的皮肤 ,比大神制作的皮肤BeautyEye ,就想当的漂亮
6. java的swing组件的使用
这些直接看对应JDK版本的java doc里面关于swing的部分,有很详细的索引页和每种控件的使用方法,还有jdk自己的一些sample。