swing的第一课

Swing介绍html

 

Swing API 可扩展 GUI组件,以减轻开发者的生活创造基于JAVA前端/GUI应用。它是创建在AWT API之上,并做为 AWT API 的更换,由于它几乎每个控制对应 AWT控制。 Swing 组件遵循模型 - 视图 - 控制器架构,以知足如下标准。前端

  • 一个单一的 API 是足够支持多种外观和风格。java

  • API 模拟驱动,使最高级别的API不要求有数据。程序员

  • API 使用Java Bean的模式,使生成工具和IDE能够提供更好的服务给开发者使用它。spring

MVC架构

Swing API架构以下松散的,基于MVC架构,如下列方式支付。shell

  • 模型表示组件的数据。浏览器

  • 查看表明组件的数据可视化表示形式。bash

  • 控制器采用的视图上的用户输入,并在组件的数据的变化反映。架构

  • Swing 组件模型做为一个单独的元素和景观,是棒状控制器部分用户界面中的元素。使用这种方式,Swing具备可插拔的外观与风格架构。app

Swing 特色

  • 重量轻 - Swing 组件是独立的原生操做系统的API与Swing API控件呈现大多采用纯JAVA代码,而不是底层的操做系统调用。

  • 丰富的控件 - Swing 提供了一套丰富的先进的控制系统,如树,JTabbedPane,滑块,颜色选择器,表格控件

  • 高度可定制 - Swing 控件能够定制视觉外观是很是简单的方法,独立的内部表示。

  • 可插拔的外观和感受 -  基于Swing GUI应用程序外观和风格基于可用值,能够在运行时改变。

 

Swing开发环境安装

 

本节将指导如何下载和设置Java 在您的机器上。请按照下列步骤来设置环境。

Java SE 是免费的,提供的连接下载Java。因此根据您的操做系统,下载一个版本。

按照说明下载 java 和运行 .exe 在你的机器上安装Java。一旦在机器上安装了Java,还须要设置环境变量指向正确的安装目录:

对于Windows 2000/XP/win7 路径:

假设您已经安装了Java在c:Program Filesjavajdk 目录:

  • 右键单击 '个人电脑r' 并选择 '属性'。

  • 点击 '环境变量' 按钮下 '高级' 标签。

  • 如今在 '路径' 变量,它也包含Java可执行文件的路径。 例如,若是路径当前设置为 'C:WINDOWSSYSTEM32', 而后可更改你的路径为 'C:WINDOWSSYSTEM32;c:Program Filesjavajdkin'.

适用于Linux,UNIX,Solaris和FreeBSD的路径:

应设置环境变量PATH指向Java二进制文件已经安装。若是你这样作有困难,请参阅shell文件。

例如,若是使用bash做为shell,添加如下行到结束行 “.bashrc文件中: '.bashrc: export PATH=/path/to/java:$PATH'

流行的Java编辑器:

编写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 元素。这部分将被覆盖在事件处理“一章。

UI classes

每一个Swing 控件继承属性从如下组件的类层次结构。

Sr. No. 类 & 描述
1 Component
容器是一个抽象基类的非菜单用户界面控件摆动。部分指图形表示的对象
2 Container
Container是一个组件,它能够包含其余Swing组件。
3 JComponent
JComponent是一个基类,全部Swing UI 组件。为了使用继承自JComponent 的 swing组件,组件必须是一个包容层次结构,其根是一个顶层的Swing容器。

SWING UI 元素:

如下是经常使用的控件列表而设计的图形用户界面使用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"); JButton okButton = new JButton("OK"); JButton submitButton = new JButton("Submit"); JButton cancelButton = new JButton("Cancel"); okButton.setActionCommand("OK"); submitButton.setActionCommand("Submit"); cancelButton.setActionCommand("Cancel"); okButton.addActionListener(new ButtonClickListener()); submitButton.addActionListener(new ButtonClickListener()); cancelButton.addActionListener(new ButtonClickListener()); controlPanel.add(okButton); controlPanel.add(submitButton); controlPanel.add(cancelButton); mainFrame.setVisible(true); } private class ButtonClickListener implements ActionListener{ public void actionPerformed(ActionEvent e) { String command = e.getActionCommand(); if( command.equals( "OK" )) { statusLabel.setText("Ok Button clicked."); } else if( command.equals( "Submit" ) ) { statusLabel.setText("Submit Button clicked."); } else { statusLabel.setText("Cancel Button clicked."); } } } }

编译程序,使用命令提示符。到 D:/ > SWING 而后输出如下命令。

D:AWT>javac comyiibaiguiSwingControlDemo.java

若是没有错误出现,这意味着编译成功。使用下面的命令来运行程序。

D:AWT>java com.yiibai.gui.SwingControlDemo

验证下面的输出

SWING  Event Handling

 

Swing事件监听器

 

事件监听器表明负责处理事件的接口。 Java 提供了各类事件监听器类,但咱们将讨论那些被更频繁地使用。每个事件监听器方法具备方法的EventObject类的子类的对象,这是做为一个单独的参数。例如,鼠标事件侦听器方法将接受MouseEvent的实例,其中派生的事件的EventObject。

EventListner 接口

它是一个标记接口,每个监听器接口扩展。这个类定义在java.util包。

类声明

如下是声明java.util.EventListener接口:

public interface EventListener

Swing事件监听器接口:

如下是经常使用的的事件监听器列表。

 

Sr. No. Control & Description
1 ActionListener
该接口用于接收动做事件。
2 ComponentListener
该接口用于接收组件事件。
3 ItemListener
该接口用于接收项目事件。
4 KeyListener
该接口用于接收按键事件。
5 MouseListener
该接口用于接收鼠标事件。
6 WindowListener
该接口用于接收窗口事件。
7 AdjustmentListener
该接口用于接收调整事件。
8 ContainerListener
该接口用于接收容器事件。
9 MouseMotionListener
此接口用于接收鼠标移动事件。
10 FocusListener
该接口用于接收焦点事件。

 

Swing事件适配器

 

适配器是抽象类,用于接收各类事件。这些类中的方法是空的。这些类存在的目的是方便建立监听器对象。

SWING适配器:

如下是经常使用的适配器列表,监听SWING GUI事件。

 

Sr. No. 适配器&说明
1 FocusAdapter
接收焦点事件的抽象适配器类。
2 KeyAdapter
接收按键事件的抽象适配器类。
3 MouseAdapter
接收鼠标事件的抽象适配器类。
4 MouseMotionAdapter
接收鼠标移动事件的抽象适配器类。
5 WindowAdapter
接收窗口事件的抽象适配器类。

 

Swing Layout布局

 

布局的意味着,在容器内的配置的组件。在其余的方式,咱们能够认为在一个特定的容器内的位置放置组件。布局管理器所控制布点的任务是自动完成的。

布局管理器

布局管理器自动定位容器内的全部组件。若是咱们不使用布局管理器,而后定位组件的默认布局管理器。这是可能的手工布局的控制,但因为如下两个缘由,它变得很是困难。

  • 这是很是繁琐的容器内处理大量的控制。

  • 一般当咱们须要安排他们没有给出一个组件的宽度和高度信息。

Java 为咱们提供了各类布局管理器来定位控制。属性如大小,形状和排列变化从一个布局管理器,其余的布局管理器。的小应用程序或应用程序窗口的大小改变时,即布局管理器applet浏览器或应用程序窗口的尺寸适应于响应的大小,形状和排列的组件也随之变化。

布局管理器关联的与每一个容器对象。每个布局管理器是实现布局管理接口的类的一个对象。

如下是接口定义布局管理器的功能。

Sr. No. 接口&说明
1 LayoutManager
布局管理器接口声明的对象将充当一个布局管理器类须要实现的方法。
2 LayoutManager2
LayoutManager2中的子接口布局管理。这个接口是为那些知道如何布局容器的基础上布局约束对象的类。

AWT布局管理器类:

如下是经常使用的控件列表而设计的图形用户界面使用AWT

 

Sr. No. LayoutManager & Description
1 BorderLayout
The borderlayout arranges the components to fit in the five regions: east, west, north, south and center.
2 CardLayout
The CardLayout object treats each component in the container as a card. Only one card is visible at a time.
3 FlowLayout
The FlowLayout is the default layout.It layouts the components in a directional flow.
4 GridLayout
The GridLayout manages the components in form of a rectangular grid.
5 GridBagLayout
This is the most flexible layout manager class.The object of GridBagLayout aligns the component vertically,horizontally or along their baseline without requiring the components of same size.
6 GroupLayout
The GroupLayout hierarchically groups components in order to position them in a Container.
7 SpringLayout
A SpringLayout positions the children of its associated container according to a set of constraints.

 

Swing Menu菜单类

 

 

正如咱们所知道与菜单相关的每个顶层窗口有一个菜单栏。此菜单栏包括提供给最终用户的各类菜单的选择。此外,每一个选择包含这就是所谓的下拉菜单中的选项列表。菜单和菜单项的控件是MenuComponent类的子类。

菜单层次结构

Swing Menu Hiearchy

菜单控件

Sr. No. 控件& 描述
1 JMenuBar
JMenuBar的对象是与顶层窗口。
2 JMenuItem
菜单中的项目必须属于JMenuItem的或任何其子类。
3 JMenu
JMenu对象是从菜单栏中显示一个下拉菜单组件。
4 JCheckboxMenuItem
JCheckBoxMenuItem 必须为 JMenuItem的子类。
5 JRadioButtonMenuItem
JRadioButtonMenuItem对象是JMenuItem的子类。
6 JPopupMenu
JPopupMenu弹出能够在一个组件内的指定位置动态弹出。

 

以上内容转载自http://www.yiibai.com/swing/

相关文章
相关标签/搜索