Swing介绍html
Swing API 可扩展 GUI组件,以减轻开发者的生活创造基于JAVA前端/GUI应用。它是创建在AWT API之上,并做为 AWT API 的更换,由于它几乎每个控制对应 AWT控制。 Swing 组件遵循模型 - 视图 - 控制器架构,以知足如下标准。前端
一个单一的 API 是足够支持多种外观和风格。java
API 模拟驱动,使最高级别的API不要求有数据。程序员
API 使用Java Bean的模式,使生成工具和IDE能够提供更好的服务给开发者使用它。spring
Swing API架构以下松散的,基于MVC架构,如下列方式支付。shell
模型表示组件的数据。浏览器
查看表明组件的数据可视化表示形式。bash
控制器采用的视图上的用户输入,并在组件的数据的变化反映。架构
Swing 组件模型做为一个单独的元素和景观,是棒状控制器部分用户界面中的元素。使用这种方式,Swing具备可插拔的外观与风格架构。app
重量轻 - Swing 组件是独立的原生操做系统的API与Swing API控件呈现大多采用纯JAVA代码,而不是底层的操做系统调用。
丰富的控件 - Swing 提供了一套丰富的先进的控制系统,如树,JTabbedPane,滑块,颜色选择器,表格控件
高度可定制 - Swing 控件能够定制视觉外观是很是简单的方法,独立的内部表示。
可插拔的外观和感受 - 基于Swing GUI应用程序外观和风格基于可用值,能够在运行时改变。
Swing开发环境安装
本节将指导如何下载和设置Java 在您的机器上。请按照下列步骤来设置环境。
Java SE 是免费的,提供的连接下载Java。因此根据您的操做系统,下载一个版本。
按照说明下载 java 和运行 .exe 在你的机器上安装Java。一旦在机器上安装了Java,还须要设置环境变量指向正确的安装目录:
假设您已经安装了Java在c:Program Filesjavajdk 目录:
右键单击 '个人电脑r' 并选择 '属性'。
点击 '环境变量' 按钮下 '高级' 标签。
如今在 '路径' 变量,它也包含Java可执行文件的路径。 例如,若是路径当前设置为 'C:WINDOWSSYSTEM32', 而后可更改你的路径为 'C:WINDOWSSYSTEM32;c:Program Filesjavajdkin'.
应设置环境变量PATH指向Java二进制文件已经安装。若是你这样作有困难,请参阅shell文件。
例如,若是使用bash做为shell,添加如下行到结束行 “.bashrc文件中: '.bashrc: export PATH=/path/to/java:$PATH'
编写Java程序,须要一个好的文本编辑器。在市场上有更复杂的 IDE。但如今,能够考虑如下两种:
记事本: 在Windows机器上,你可使用任何简单的文本编辑器(如记事本)(本教程推荐TextPad)。
Netbeans:是一个Java IDE,它是开源和免费,可下载 http://www.netbeans.org/index.htmll.
Eclipse : 也是一个Java IDE Eclipse开源社区开发的,能够直接从网上下载 http://www.eclipse.org/.
Swing控件
每个用户界面参考主要有如下三个方面:
UI 元素: 有核心视觉元素,最终用户看到并与之交互。 GWT 提供了一个巨大的名单变化更复杂,本教程咱们从基本的普遍使用和常见的元素。
布局: 他们定义 UI 元素如何应安排在屏幕上,并提供一个最终的外观和感受的GUI(图形用户界面)。在“布局”一章,这部分将被覆盖。
行为: 这些事件发生时,与用户交互的 UI 元素。这部分将被覆盖在事件处理“一章。
每一个Swing 控件继承属性从如下组件的类层次结构。
Sr. No. | 类 & 描述 |
---|---|
1 | Component 容器是一个抽象基类的非菜单用户界面控件摆动。部分指图形表示的对象 |
2 | Container Container是一个组件,它能够包含其余Swing组件。 |
3 | JComponent JComponent是一个基类,全部Swing UI 组件。为了使用继承自JComponent 的 swing组件,组件必须是一个包容层次结构,其根是一个顶层的Swing容器。 |
如下是经常使用的控件列表而设计的图形用户界面使用Swing。
Sr. No. | 控件& 描述 |
---|---|
1 | JLabel 一个JLabel对象是在容器中放置文本的一个组成部分。 |
2 | JButton 该类建立标记的按钮。 |
3 | JColorChooser JColorChooser提供一个用于控制窗格设计,让用户操做和选择颜色。 |
4 | JCheck Box JCheckBox的是一个图形化的组件能够在一个(true)或关闭(false)状态时。 |
5 | JRadioButton JRadioButton类是一个图形化的组件能够在一个(true)或关闭(false)状态时。在一组。 |
6 | JList JList组件向用户展现一个滚动的文本项列表。 |
7 | JComboBox JComboBox组件为用户提供了一个选择显示菜单。 |
8 | JTextField JTextField的对象是一个文本组件,它容许编辑的单行文本。 |
9 | JPasswordField JPasswordField中对象是一个专门用于输入密码的文本组件。 |
10 | JTextArea JTextArea对象是一个文本组件,它容许编辑的多行文本。 |
11 | ImageIcon ImageIcon的控件的图标界面,实现从图像绘制图标 |
12 | JScrollbar Scrollbar控件表明一个滚动条组件以让用户从范围选择的值。 |
13 | JOptionPane JOptionPane的规定设置标准对话框,提示用户提供值或向其发出通知。 |
14 | JFileChooser JFileChooser的控制表明一个对话框窗口,用户能够选择一个文件。 |
15 | JProgressBar 随着任务的进展,进度条接近完成显示任务的完成百分比。 |
16 | JSlider JSlider让用户以图形界的时间间隔内滑动旋钮选择一个值。 |
17 | JSpinner JSpinner让用户从一个有序序列中选择一个数字或者一个对象值的单行输入字段。 |
Swing事件处理
一个对象的状态变化被称为事件,即事件描述源状态的变化。事件产生的结果与用户交互的图形用户界面组件。例如,点击一个按钮,移动鼠标,经过键盘输入一个字符,从列表中选择一个项目,滚动页面的活动,使一个事件的发生。
事件能够被大体分为两类:
前台事件 - 这些事件须要用户直接互动。在图形用户界面中的图形组件交互的人产生的后果。例如,点击一个按钮,移动鼠标,经过键盘输入一个字符,从列表中选择一个项目,滚动页面等
后台事件 - 这些事件,须要最终用户的交互是已知的做为背景的事件。操做系统的中断,硬件或软件故障,定时器到期时,操做完成的背景事件的例子。
事件处理机制,控制的事件,并决定若是一个事件发生时,会发生什么。这种机制被称为事件处理程序,在事件发生时执行的代码。 Java使用代理事件模型来处理事件。该模型定义了标准的机制来生成和处理事件。让咱们简要介绍这种模式。
代理事件模型具备如下的主要参与者,即:
源 - 源是一个对象,在该对象上的事件发生。它的处理器提供发生事件的信息来源是可靠的。 JAVA提供与源对象的类。
监听器 - 它也被称为做为事件handler.Listener是负责产生响应一个事件。从Java实现的角度来看,监听器也是一个对象。等待直到它接收到一个事件监听器。一旦收到事件,监听器进程的事件就返回。
这种方法的好处是,用户界面逻辑彻底分开,生成该事件的逻辑。用户界面元素是可以委派的事件处理单独的一段代码。在这个模型中,须要与源对象注册监听使侦听器可以接收事件通知。这是一个有效的方式处理事件,由于这些事件通知只发送给那些监听器要接收他们。
用户单击该按钮时产生该事件。
如今有关事件类的对象是自动建立的信息源和事件在同一对象获得填充。
事件对象被转发注册监听器类的方法。
该方法如今获得执行并返回。
为了设计一个监听类,咱们必须开发一些监听器接口。这些监听器接口预测一些公共的抽象监听器类必须实现的回调方法。
若是不执行任何预约义的接口,类不能做为源对象的监听器类。
这些方法所提供的API提供程序,被定义为应用程序员和应用程序开发者调用。这里的回调方法表明一个事件的方法。在响应一个事件的Java JRE将触发回调方法。全部这些回调方法的监听器接口。
若是一个组件须要一些监听器会听的事件源必须注册本身监听。
选择使用任何编辑器建立如下java程序在 D:/ > SWING > com > yiibai > gui >
SwingControlDemo.java
package com.yiibai.gui; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class SwingControlDemo { private JFrame mainFrame; private JLabel headerLabel; private JLabel statusLabel; private JPanel controlPanel; public SwingLayoutDemo(){ prepareGUI(); } public static void main(String[] args){ SwingLayoutDemo swingLayoutDemo = new SwingLayoutDemo(); swingLayoutDemo.showEventDemo(); } private void prepareGUI(){ mainFrame = new JFrame("Java SWING Examples"); mainFrame.setSize(400,400); mainFrame.setLayout(new GridLayout(3, 1)); headerLabel = new JLabel("",JLabel.CENTER ); statusLabel = new JLabel("",JLabel.CENTER); statusLabel.setSize(350,100); mainFrame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent windowEvent){ System.exit(0); } }); controlPanel = new JPanel(); controlPanel.setLayout(new FlowLayout()); mainFrame.add(headerLabel); mainFrame.add(controlPanel); mainFrame.add(statusLabel); mainFrame.setVisible(true); } private void showEventDemo(){ headerLabel.setText("Control in action: Button");