java swing 组件大全
常用swing组件

JLabel(String text):创建具有指定文本的 标签
JLabel(String text, Icon icon, int horizontalAlignment): 创建具有指定文本、图像和水平对齐方式的标签。
选择框
JList类:创建列表框,用法类似于List类;
JComboBox类:用户可以在下拉列表看到第一个选项和它 旁边的箭头按钮,当用户单击箭头按钮时,将发生 ItemEvent事件; JCheckBox 类:负责创建复选框对象。与Checkbox相比, JCheckBox复选框的名字不仅可以是字符串,还可以是一 个图标; JRadioButton:负责创建单选钮,不过需要将同一组的选 项添加到ButtonGroup对象中。
例7 选择框使用 代码见word文档
文本框
JTextField类:创建单行文本框,功能与TextField类似;
JPasswordField类:创建密码框;为了安全性,用 public char[] getPassword() 来取代getText(); JTextArea类:创建多行文本框,通常放在JScrollPane对象中
中间容器
JPanel类:创建面板,用于容纳其它组件,默认的布局管理 器是FlowLayout。其用法与Panel类似. JScrollPane类:用于创建滚动窗格,我们可以把一个组件 放到该类对象中,然后通过滚动条来观察组件。注意: JTextArea不自带滚动条(这一点与重量组件TextArea不同), 因此,需要把文本区放到一个滚动窗口中。例如: JScorollPane scroll=new JScorollPane(new JTextArea()); 该类用法与ScrollPane类似。 JToolBar类:创建工具栏;setFloatable(boolean b)为 true(默认值)时,可以拖动到容器的四“边”中的何一边 , 也可以拖到单独窗体。 例2 JToolBar 工具栏的使用 。代码见word文档
JavaSwing组件大全实例演示

JavaSwing组件⼤全实例演⽰⼀抛砖引⽟ 本⽂指在利⽤⼀个⼩”Swing 组件⼤全”来引导⼤家学习这门语⾔,熟悉Java Swing的各个组件。
并在学习过程中参考作者这⼀程序的⽅法和思想,最终形成⾃⼰的思维⽅式和学习⽅式。
你能举⼀返三是作者最开⼼的事情。
⼩程序演⽰了Java Swing⼤部分组件。
最后附上了全部代码及详细的注释说明。
希望本⽂能对⼤家学习Java有所帮助。
随着Java风潮席卷国内,学习Java的⽅法和路径越来越多。
⽽在⼤量的书本前,在Java庞⼤的类库前⼤⼤家都有点迷失⽅向的感觉,是学 J2EE,J2ME还是。
然⽽所有的这些都或多或少的离不开J2SE。
万丈⾼楼平地起。
J2SE是整个Java的基础,学好了这个对Java的各个⽅向都是很有利的。
⽽学习J2SE的最初点就在界⾯设计,因为界⾯编程是你来感觉最直接的⼿段,是提⾼⼤家编程兴趣的很好开始,因为你写完程序编译后可马上看到⾃⼰的成果。
⽽不像后台编程做完了都感受不到效果。
⽽好的界⾯也是你测试你其他程序的基础。
界⾯设计!不就是拖拉操作吗?如果是VB,VC等可视化的编程,的确只是⼀些拖拉操作,由于Java语⾔的设计中所有的东西都是程序代码,在 Java中如果想要设计⼀个好的界⾯,可不是简单的拖拉操作能完成的。
即使使⽤了如JBuilder这么强⼤的可视化⼯具,你也得亲⾃动⼿写⼀些界⾯设计代码才能很好的完成你的任务。
如果你能在此基础上理解Java界⾯设计的思想,对你学习这门语⾔将有莫⼤的帮助。
Java界⾯设计主要涉及Awt,Swing两⼤类库,Swing是Awt的扩展和功能加强。
下⾯我们就以Swing为基础来说说整个Java的界⾯设计。
⼆感受效果 在开始之前,让我们看看这篇⽂章要达到的效果,有了⽬标和成果才有学习的兴趣,起码我是这样认为和学习的。
如下图所⽰,这就是我们设计的界⾯,它包括了Swing中⼤部分常⽤的组件。
有些功能界⾯上反映不出来,⼤家可尝试编译源代码点南击各个部分,看看它们的响应事件。
JavaSwing界面设计(所有控件及示例)

25
示例:学生信息管理系统
步骤二:添加标签(要录入的基本信息的名称)
JFrame f=new JFrame(); …… Container con=f.getContentPane(); Jpanel pan=new JPanel(); JLabel l_xm=new JLabel("姓名"); pan.add(l_xm); JLabel l_xb=new JLabel("性别"); pan.add(l_xb); …… con.add(pan); f.setVisible(true);
3
用户界面概述
用户界面的类型
字符用户界面(CUI):例如,MS-DOS 图形用户界面(GUI):例如,Microsoft Windows
GUI的组件
组件
基本的控制组件,例如:Button、Label等。 容器:能容纳和排列组件的组件
组件继承它的父容器的性质
4
Label
Frame Window
创建图标和图像对象 a) ImageIcon ii = new ImageIcon(“x.gif ”); b) Image image = ii.getImage();
设置 setIconImage(image);
19
界面的基本组织方式
由JFrame创建初始的用户界面 由JPanel、JScrollPane、JTabbedPane、JSplitPane、
添加中间容器JPanel JFrame f=new JFrame(); f.setTitle("学生信息管理系统");
java swing常用的9种组件

在Java1.0中,已经有一个用于GUI编程的类库AWT(Abstract Window Toolkit),称之为抽象窗口工具箱。
遗憾的是,AWT中的组件(例如按钮,类名为Button)在实现中使用了本地代码(Native Code),这些组件的创建和行为是由应用程序所在平台上的本地GUI工具来处理的。
因此,AWT组件要在不同的平台上提供给用户一致的行为就受到了很大的限制。
同时,AWT组件中还存在很多bug,这就使得使用AWT来开发跨平台的GUI应用程序困难重重。
1996年,SUN公司和Netsacpe公司在一个称为Swing的项目中合作完善了Netsacpe公司原来开发的一套GUI库,也就是现在所谓的Swing组件。
Swing组件和原来的AWT组件完全不同,最大的区别就是Swing组件的实现中没有使用本地代码,这样对底层平台的依赖型就大为降低,并且可以给不同平台的用户一致的感觉。
此外,和原来的AWT相比,Swing 中提供了内容更多、使用更为方便的组件。
在阅读一些书籍时,常会遇到名词JFC(Java Foundation Class)。
JFC的概念是在1997年的JavaOne开发者大会上首次提出的,是指用于构建GUI的一组API。
实际上,Swing只是JFC的一部分,其它的还有二维图形(Java 2D)API以及拖放(Drag and Drop)API等等。
Swing并不是完全取代了AWT,Swing只是使用更好的GUI组件(如JButton)代替AWT 中相应的GUI组件(如Button),并且增加了一些AWT中原来所没有的GUI组件。
并且,Swing 仍使用AWT 1.1的事件处理模型。
虽然现在AWT组件仍得到支持,但是建议在你的应用程序中尽量使用Swing组件和1.1的事件模型。
1.标签(JLabel)标签(JLabel)通常是用来标识另外一个组件的含义。
以在标签上显示文字、图象或是文字图象的组合。
Swing组件

最底层容器,默认不可见; 最底层容器,默认不可见; 构造函数: 构造函数:
• JFrame( ) • JFrame(String title)
JFrame的关闭 的关闭
• setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
范例: 范例:path: exam\ch5
范例: 范例:
• • • • • exam\ch8\SimpleTable.java exam\ch8\TableModel2.java exam\ch8\ColumnModelTest.java exam\ch8\SelectionModelDemo.java exam\ch8\AddRemoveCells.java
Swing组件的使用 Swing组件的使用
1、使用Swing的基本规则 、使用 的基本规则
组件放入一个顶层Swing容器中 把Swing组件放入一个顶层 组件放入一个顶层 容器中 避免使用非Swing的重量级组件 避免使用非 的重量级组件 不同, 组件不能直接加到顶层Swing 与AWT不同,Swing组件不能直接加到顶层 不同 组件不能直接加到顶层 容器中,它们必须加到一个与Swing顶层容器相 容器中,它们必须加到一个与 顶层容器相 关的内容面板(content pane)上。 关的内容面板 上
可以最大化、最小化、关闭窗口、加入菜单等; 可以最大化、最小化、关闭窗口、加入菜单等; 即不能单独出现; 是lightweight component,即不能单独出现; 即不能单独出现 能利用Look and Feel制定界面感观 能利用 制定界面感观 一般将JInternalFrame假如 假如DesktopPane(Virtual Desktop) 一般将 假如 构造函数: 构造函数:
第11章 Swing组件

11.1 Swing组件介绍
第11章 Swing组件
Swing是AWT的扩展。 这些组件包括与AWT包中类似的按钮 JButton、复选框JCheckBox、标签JLable 、文本框JTextField和JTextArea等,选项板 JComboBox、单选按钮JRadioButton、树 JTree、表格JTable和工具栏JToolBar等。
图11-3 简易计算器
11.3 综合运用实例
问题实现: •该实例中定义MyCalculatorSwing类。
第11章 Swing组件
•首要工作是根据问题描述来设计界面,创建界面中所需的各种组件,这个工作 在构造方法中完成。 •第二项也是最重要的个工作就需要响应执行本程序时可能出现的各种按钮事件。 •按钮事件监听器接口中的抽象方法actionPerformed, ShowNum方法, equal方法。
第11章 Sw,JRadioButton单选项 组件
•【例11-2】多选项和单选项组件的应用。
11.3 综合运用实例
【实例11】
问题描述:
第11章 Swing组件
•计算器程序界面上的组件包括10个数字按钮(0~9)、 4个运算按钮(+、-、*、/)、1个清空按钮(C)、等号按钮(=) 和用于显示数值的文本框。 •使用该界面中的各个按钮以实现简单的四则运算功能。
第11章 Swing组件
第11章 Swing组件
第11章 Swing组件
11.1 Swing组件介绍 11.2 Swing常见组件的使用 11.3 综合运用实例
11.1 Swing组件介绍
• 软件包javax.swing。
第11章 Swing组件
• Swing组件,也被称之为“轻量级”( lightweight)组件。
Swing组件大全

一抛砖引玉本文指在利用一个小程序”Swing 组件大全”来引导大家学习Java这门语言,熟悉Ja va Swing的各个组件。
并在学习过程中参考作者设计这一程序的方法和思想,最终形成自己的思维方式和学习方式。
你能举一返三是作者最开心的事情。
小程序演示了Java Swing 大部分组件。
最后附上了全部代码及详细的注释说明。
希望本文能对大家学习Java有所帮助。
随着Java风潮席卷国内,学习Java的方法和路径越来越多。
而在大量的书本前,在J ava庞大的类库前大大家都有点迷失方向的感觉,是学J2EE,J2ME还是。
然而所有的这些都或多或少的离不开J2SE。
万丈高楼平地起。
J2SE是整个Java的基础,学好了这个对Java的各个方向都是很有利的。
而学习J2SE的最初点就在界面设计,因为界面编程是你来感觉最直接的手段,是提高大家编程兴趣的很好开始,因为你写完程序编译后可马上看到自己的成果。
而不像后台编程做完了都感受不到效果。
而好的界面也是你测试你其他程序的基础。
界面设计!不就是拖拉操作吗?如果是VB,VC等可视化的编程,的确只是一些拖拉操作,由于Java语言的设计中所有的东西都是程序代码,在Java中如果想要设计一个好的界面,可不是简单的拖拉操作能完成的。
即使使用了如JBuilder这么强大的可视化工具,你也得亲自动手写一些界面设计代码才能很好的完成你的任务。
如果你能在此基础上理解Java界面设计的思想,对你学习这门语言将有莫大的帮助。
Java界面设计主要涉及Awt,Swing两大类库,Swing是Awt的扩展和功能加强。
下面我们就以Swing为基础来说说整个Java的界面设计。
二感受效果在开始之前,让我们看看这篇文章要达到的效果,有了目标和成果才有学习的兴趣,起码我是这样认为和学习的。
如下图所示,这就是我们设计的界面,它包括了Swing中大部分常用的组件。
有些功能界面上反映不出来,大家可尝试编译源代码点南击各个部分,看看它们的响应事件。
swing 组件和容器——java swing 组件技术(中)

swing 组价和容器——java swing 组件和技术(中)一、swing组件和容器概览1.顶层容器(JFrame,JDialog,JApplet)JFrame—框架,主要用来设计应用程序的图像界面JDialog—对话框,通常用来设计具有依赖关系的窗口JApplet—小应用程序,主要用来设计嵌入网页中运行的java程序2.一般容器普通容器(JPanel、JScrollPane、JToolbar、JSplitPane、JTabbedPane) JPanel—面板,通常只有背景颜色的普通容器JScrollPane—滚动窗格,具有滚动条JToolbar—工具条,通常将多个组件排成一排或者一列JSplitPane—分裂窗格,用来装两个组件的容器JTabbedPane—选项卡窗格,允许多个组件共享相同的界面空间专用容器(JLayeredPane、JRootPane 、JInternalFrame)JLayeredPane—分层窗格,给窗格增加了深度的概念JRootPane—根窗格,一般是自动创建的容器JInternalFrame—内部窗格,可以在一个窗口内显示若干个类似于框架的窗口3.基本控件(JButton、JCombobox、JList、JMenu、JSlider、JTextField)4.不可编辑信息组件(JLabel、JProgressBar、JToolTip等)5.可编辑组件(JColorChooser、JFileChooser、Jtabel、JTextArea、JTree等)二、常用的swing组件和容器1.JFrame✧顶层容器,默认不可见;默认布局方式为BorderLayout✧构造函数:●JFrame()●JFrame(String title)//title 为框架的标题内容✧JFrame常用方法●setDefaultCloseOperation(int operation)—设置关闭框架的行为参数operation一般是JFrame. EXIT_ON_CLOSE,表示关闭框架时,则退出程序●setSize(int width, int height)—设置框架的大小●setVisible(boolean b)—设置框架是否可见,默认为false●getContentPane()—获取顶层容器的内容面板●add(Component comp)—往内容面板添加组件●setLayout(LayoutManagermgr)—设置布局方式,默认为BorderLayoutexample:JDialog 和JOptionPane的demo2.JDialog 和JOptionPanea)JDialog✧在已有的窗口上创建对话框,可以使用此类创建自定义的对话框✧构造函数:⏹JDialog(Dialog owner, String title, boolean modal)⏹JDialog(Frame owner, String title, boolean modal)owner—指定对话框的父窗口title—对话框的标题modal—对话框的模式(true为“有模式对话框”,false为“无模式对话框”✧JDialog常用方法⏹setSize(int width, int height)—设置对话框的大小⏹getContentPane()—获取顶层容器的内容面板⏹add(Component comp)—往内容面板添加组件⏹setLayout(LayoutManagermgr)—设置布局方式,默认为BorderLayoutb)JOptionPane✧提供一些现成的、各种常用的标准对话框(有模式的对话框)✧JOptionPane类里静态方法众多,但几乎所有静态方法都遵循showXxxDialog()的形式,如下:这四种方法的参数都遵循一致的模式:①ParentComponent:指示对话框的父窗口对象,一般为当前窗口。
swing组件及其用法

swing组件及其用法Swing组件是用于创建图形用户界面的Java库。
它提供了丰富的界面元素和布局管理器,可以实现各种图形界面应用程序。
下面是一些常用的Swing组件及其用法:1. JFrame:顶层窗口组件,用于创建一个窗口。
用法示例:```javaJFrame frame = new JFrame("My Frame");frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(500, 300);frame.setVisible(true);```2. JPanel:容器组件,用于组织其他组件。
用法示例:```javaJPanel panel = new JPanel();panel.setLayout(new FlowLayout());panel.add(new JButton("Button 1"));panel.add(new JButton("Button 2"));```3. JButton:按钮组件,用于触发动作。
用法示例:```javaJButton button = new JButton("Click me");button.addActionListener(e -> System.out.println("Buttonclicked"));```4. JLabel:标签组件,用于显示文本或图像。
用法示例:```javaJLabel label = new JLabel("Hello, world!");label.setIcon(new ImageIcon("image.png"));```5. JTextField:文本输入框组件,用于接收用户输入。
常用Swing组件

JTabbedPane类的构造方法有: 类的构造方法有: 类的构造方法有 JTabbedPane() 创 建 空 对 象 , 该 对 象 具 有 缺 省 的 标 签 位 置 JTabbedPane.TOP 和缺省的布局策略JTabbedPane.WRAP_TAB_LAYOUT。 。 和缺省的布局策略 JTabbedPane(int tabPlacement)创建空对象,该对象具有指定 创建空对象, 创建空对象 的标签位置:JTabbedPane.TOP、JTabbedPane.BOTTOM、 的标签位置: 、 、 JTabbedPane.LEFT 或 JTabbedPane.RIGHT 以 及 缺 省 的 布 局策略JTabbedPane.WRAP_TAB_LAYOUT。 局策略 。 JTabbedPane(int tabPlacement, int tabLayoutPolicy)创建空对 创建空对 象 , 该对象具有指定的标签位置和布局策略。 布局策略可 该对象具有指定的标签位置和布局策略 。 以是以下两种之一: 以是以下两种之一 : JTabbedPane.WRAP_TAB_LAYOUT 或 JTabbedPane.SCROLL_TAB_LAYOUT。加滚动条 。
javax.swing.JPane 类继承于 类继承于javax.swing.JComponent 类 , 其构 造 其 构造 方法有: 方法有: JPanel() 创建具有缺省 创建具有缺省FlowLayout布局的 布局的JPanel对象。 对象。 布局的 对象 JPanel(LayoutManager layout) 创 建 具 有 指 定 布 局 管 理 器 的 JPanel对象。 对象。 对象 作为画布的绘画区域使用时, 将JPanel作为画布的绘画区域使用时, 要使用下面的两个步骤 : 作为画布的绘画区域使用时 要使用下面的两个步骤: 首先,设置画布绘图区域的大小;其次,使 用 paintComponent()方法 ( 不是 方法( 方法) 方法 不是paint()方法) 来绘图 , 在该方法 方法 来绘图, 体中, 首先调用方法super.paintComponent( ) 来清除显示区 体中 , 首先调用方法 ( 域。
第3章 Swing基本组件(下)

中国十大品牌IT教育机构
本章目标
掌握常用布局管理器
1. 流式布局(FlowLayout) 2. 边界布局(BorderLayout) 3. 网格布局(GridLayout)
第2章 Swing基本组件(上)

java.awt包
java.awt包是Java内置的包,属于Java基础类库(JFC)的一部分, 其中包括以下内容:
1. 2. 3. 4. 便于用户输入的一组丰富的界面组件; 将组件放置在适当位置的几种布局管理器; 事件处理模型; 图形和图像工具等等。
要使用到该包中的类,则必须显式地声明如下语句: import java.awt.*;
JDialog的构造方法
JDialog类的构造方法共有11种重载,以下是常用的几种: 构 造 方 法
JDialog()
说
明
创建一个没有标题并且没有指定所有者的无模式对话框 创建一个没有标题但将指定的owner作为其所有者的无模 式对话框 创建一个没有标题但有指定所有者的对话框,根据参数 modal来决定它是否模式显示 创建一个具有指定标题和指定所有者的无模式对话框 创建一个有指定标题和指定所有者的对话框,参数modal 决定它是否模式显示 创建一个没有标题但有指定所有者的对话框,根据参数 modal来决定它是否模式显示
常 Color.BLACK Color.CYAN Color.GRAY
量 黑色 青色 灰色
颜
色
常 Color.BLUE
量 蓝色
颜
色
Color.DARK_GRAY Color.GREEN Color.MAGENTA Color.PINK Color.WHITE
深灰色 绿色 洋红色 粉红色 白色
Color.LIGHT_GRAY Color.ORANGE Color.RED Color.YELLOW
说
明
设置容器的背景色,由参数bg指定颜色 设置容器的布局,参数是布局管理器 往容器中添加一个组件 将指定组件添加到容器中的指定位置上 从容器中移除指定的组件 从容器中移除所有组件 重新绘制当前容器
Swing常用组件

Swing对话框-JDialog
• 对话框也是编写GUI程序中经常使用到的顶 层容器。 • JDialog类扩展了java.awt.Dialog类。下 面使用JDialog创建了一个最简单的对话框, 代码如下:
JDialog区分模式对话框和非模式对话框
• 非模式对话框允许用户同时在对话框和程 序的主窗口中输入信息; • 模式对话框在处理完之前不能与程序的主 窗口进行交互。 • 创建一个模式对话框的代码如下:
宿主平台的窗口系统所提供的代码,是轻量级组件
(light weight components)。
Swing的一部分重要特点
• • • • • Swing组件独立于本地窗口系统 Swing组件可以在任何支持AWT的平台系统中运行 Swing完全用Java来执行许多传统的AWT组件 Swing与AWT兼容并且Swing组件能够与AWT组件交 换使用 Swing提供的GUI控件的数量和质量是其他任何GUI 工具包都不可比拟的 Swing拥有一套丰富的、友好的界面元素 在不同的平台上,Swing提供了一致的用户体验 对于Sun公司的“一次编写,到处运行”的理念, Swing将它变成了现实。
Java事件类及其继承关系
Swing中组件的继承关系
Swing组件和容器
• JComponent是一个抽象类,用于定义所有子类组 件的一般方法,其类层次结构如下所示。 ng.Object | +ponent | +--java.awt.Container | +--javax.swing.JComponent • 并不是所有的Swing组件都继承于JComponent类, JComponent类继承于Container类,所以,凡是此 类的组件都可作为容器使用。
SWING组件

文本区
构造一个4行、30列、显示初始字符串
“Initial text”的文本区
JTextArea ta = new JTextArea(“Initial text”, 4, 30) append(String str) 将指定文本追加到文本区。 insert(String str, int pos) 将指定文本插入到文本区的特定位置。 replaceRange(String str, int start, int end) 指定文本替换文本区中的部分内容
菜单项
常用的菜单项构造方法
JMenu m1 = new JMenu (“File”) ; —— 构造一个只显示图标 JMenuItem(Icon icon) JMenuItem mi1 = new JMenuItem( "Save", KeyEvent.VK_S ); 的菜单项,图标由 Icon 型参数 icon 指定 JMenuItem mi2 = new JMenuItem (“Load”); JMenuItem(String text) —— JMenuItem mi3 = new JMenuItem (“Quit”) ; 构造一个只显示文 m1.add(mi1) ; 本的菜单项,文本由 String 型参数text指定 快捷键也可以在菜单项被创 m1.add(mi2); 建之后,通过 JMenuItem(String text, Icon icon) —— 构造一个 m1.add(mi3); setMnemonic(char mnemonic)
菜单,只有一种构造方法
JMenuBar()
菜单栏
JFrame、JApplet和JDialog等类中定义了
setJMenuBar(JMenuBar menu)方法,可以把 菜单栏放到窗口的上方
第08章 常用Swing组件

Java程序设计
第8章 常用Swing组件
3.组件的大小与位置
public void setSize(int width,int height) 设置组件 的大小,参数width指定组件的宽度,height指定 组件的高度。
public void setLocation(int x,int y) 设置组件在容 器中的位置,容器的坐标系的左上角的坐标是 (0,0),参数x,y指定该组件距容器的左边界 x个像素, 距容器的上边界 y 个像素。 public Dimension getSize() 方法返回的 Dimension 对象的width的值就是组件的宽度、 height的值就是当前组件的高度。
Java程序设计
第8章 常用Swing组件
JComponent类的功能(续)
4) 键盘导航:使用registerKeyboardAction( ) 方法,能使 用户用键盘代替鼠标来驱动组件。JComponent类的子类 AbstractButton还提供了setMnemonic( )方法指明一个 字符,通过这个字符和一个当前L&F的特殊修饰共同激活 按钮动作。
Java程序设计
第8章 常用Swing组件
5.组件上的光标
public void setCursor(Cursor c) 设置鼠标指向组 件时的光标形状。 可以使用 Cursor类的类方法直接获得一个光标对象, 例如:
Cursor c; c=Cursor.getPredefinedCursor(Cursor.HAND_CURSOR );
设置标签的文本
设置标签内组件的水平对齐方式 设置标签内组件的垂直对齐方式 设置标签内文字与图标的水平相对位 置 设置标签内文字与图标的垂直相对位 置
JavaSwing控件属性归纳

JavaSwing控件属性归纳Java Swing控件属性归纳了解各种用户界面组件:JButton、JLabel、JTextField、JTextArea、JComboBox、Jlist、JCheckBox、JRadioButton、JMenuBar、JMenu、JMenuItem、JC heckBoxMenuItem、JRadioButtonMenuItem、JScrollBar、JScrol lPane、JTabbedPane等一、JButton¨按钮是一种点击时触发行为事件的组件。
¨按钮的四个构造方法:" public Jbutton()创建一个空按钮" public JButton(String text)创建一个标有指定文字的按钮" public JButton(Icon icon)创建一个标有指定图标的按钮" public JButton(String text,Icon icon)创建一个标有指定文字和图标的按钮¨图标:是一个固定大小的图片,典型的图标体形较小,用于装饰组件。
利用类ImageIcon可以从图像文件中得到图标,如:Icon icon=new ImageIcon(“photo.gif”);JButton的属性¨ text:按钮上的标签,例如可用jbt.setText(“OK”)给按钮jb t设置标签。
¨icon:按钮上的图标,例如可用jbt.setTextIcon(new ImageI con(“a.gif”))。
¨ mnemonic:指定热键。
同时按下ALT键和指定热键相当于按下该按钮。
例如使用jbt.setMnemonic(‘O’)可将O设置为按钮jbt 的热键。
¨horizontalAlignment:此属性只有三个值SwingConstants. LEFT,SwingConstants.CENTER, SwingConstants.RIGHT。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
import javax.swing.*;import java.awt.*;import java.awt.event.*;import javax.swing.tree.*;import javax.swing.event.*;import javax.swing.border.*;import javax.swing.table.*;/*** Swing 组件测试程序* 测试Swing所有组件及其相应的事件* @author 天翼.李 2003.4.17 晚23:14* @link * @link robococde@*/public class SwingT est extends JFrame{/*** 主模块,初始化所有子模块,并设置主框架的相关属性 */public SwingTest(){// 初始化所有模块MenuTest menuTest = new MenuTest();LeftPanel leftPanel = new LeftPanel();RightPanel rightPanel = new RightPanel();BottomPanel bottomPanel = new BottomPanel();CenterPanel centerPanel = new CenterPanel();// 设置主框架的布局Container c = this.getContentPane();// c.setLayout(new BorderLayout())this.setJMenuBar(menuTest);c.add(leftPanel,BorderLayout.WEST);c.add(rightPanel,BorderLayout.EAST);c.add(centerPanel,BorderLayout.CENTER);c.add(bottomPanel,BorderLayout.SOUTH);// 利用无名内隐类,增加窗口事件this.addWindowListener(new WindowAdapter(){public void WindowClosing(WindowEvent e){// 释放资源,退出程序dispose();System.exit(0);}});setSize(700,500);setTitle("Swing 组件大全简体版");// 隐藏frame的标题栏,此功暂时关闭,以方便使用window事件// setUndecorated(true);setLocation(200,150);show();}/////////////////////////////////////////////////////////////////////////////*** 菜单栏处理模块* JMenuBar --+* --JMenu--+* --JMenuItem --ActionListener**/class MenuTest extends JMenuBar{private JDialog aboutDialog;/*** 菜单初始化操作*/public MenuTest(){JMenu fileMenu = new JMenu("文件");JMenuItem exitMenuItem = new JMenuItem("退出",KeyEvent.VK_E);JMenuItem aboutMenuItem = new JMenuItem("关于...",KeyEvent.VK_A);fileMenu.add(exitMenuItem);fileMenu.add(aboutMenuItem);this.add(fileMenu);aboutDialog = new JDialog();initAboutDialog();// 菜单事件exitMenuItem.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){dispose();System.exit(0);}});aboutMenuItem.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){// "关于"对话框的处理aboutDialog.show();}});}/*** 返回关于对话框*/public JDialog getAboutDialog(){return aboutDialog;}/*** 设置"关于"对话框的外观及响应事件,操作和JFrame一样都是在内容 * 框架上进行的*/public void initAboutDialog(){aboutDialog.setTitle("关于");Container con =aboutDialog.getContentPane();// Swing 中使用html语句Icon icon = new ImageIcon("smile.gif");JLabel aboutLabel = new JLabel("<html><b><font size=5>"+"<center>Swing 组件大全简体版!"+"<br>天翼.李",icon,JLabel.CENTER);//JLabel aboutLabel = new JLabel("Swing 组件大全简体版!",icon,JLabel.CENTER);con.add(aboutLabel,BorderLayout.CENTER);aboutDialog.setSize(450,225);aboutDialog.setLocation(300,300);aboutDialog.addWindowListener(new WindowAdapter(){public void WindowClosing(WindowEvent e){dispose();}});}}/////////////////////////////////////////////////////////////////////////////*** 最左边模块,继承JPanel,初始化内容为JTree* JPanel--+* --JTree*/class LeftPanel extends JPanel{private int i = 0;public LeftPanel(){DefaultMutableTreeNode root = new DefaultMutableTreeNode("Root");DefaultMutableTreeNode child = new DefaultMutableTreeNode("Child");DefaultMutableTreeNode select = new DefaultMutableTreeNode("select");DefaultMutableTreeNode child1 = new DefaultMutableTreeNode(""+i);root.add(child);root.add(select);child.add(child1);JTree tree = new JTree(root);tree.getSelectionModel().setSelectionMode(TreeSelectionModel.DISCONTIGUO US_TREE_SELECTION);// 每个节点的行高tree.setRowHeight(20);tree.addTreeSelectionListener(new TreeSelectionListener (){public void valueChanged(TreeSelectionEvent e){// 内隐类不能直接引用外部类tree,1.外部变量可申明为final 2.新建外部类的对象JTree tree =(JTree)e.getSource();DefaultMutableTreeNode selectNode = (DefaultMutableTreeNode)tree.getLa stSelectedPathComponent();i++;selectNode.add(new DefaultMutableTreeNode(""+i));}});tree.setPreferredSize(new Dimension(100,300));// tree.setEnabled(true);JScrollPane scrollPane = new JScrollPane(tree);//scrollPane.setSize(100,350);this.add(scrollPane);}}/////////////////////////////////////////////////////////////////////////////*** 最下面层模块,继承JPanel,初始化内容为进度条,并由定时器控制* JPanel--+* --JProcessBar --Timer*/class BottomPanel extends JPanel{private JProgressBar pb;//////////////////////////////////////////public class//////////////////////////////public BottomPanel(){pb = new JProgressBar();pb.setPreferredSize(new Dimension(680,20));// 设置定时器,用来控制进度条的处理Timer time = new Timer(1,new ActionListener()int counter = 0;public void actionPerformed(ActionEvent e){counter++;pb.setValue(counter);Timer t = (Timer)e.getSource();// 如果进度条达到最大值重新开发计数if (counter == pb.getMaximum()){t.stop();counter =0;t.start();}}});time.start();pb.setStringPainted(true);pb.setMinimum(0);pb.setMaximum(1000);pb.setBackground(Color.white);pb.setForeground(Color.red);this.add(pb);}/*** 设置进度条的数据模型*/public void setProcessBar(BoundedRangeModel rangeModel){pb.setModel(rangeModel);}}/////////////////////////////////////////////////////////////////////////////*** 最右边模块,继承JPanel,初始化各种按钮* JPanel--+* --JButton --JToggleButton -- JList -- JCombox --JCheckBox .... */class RightPanel extends JPanel{public RightPanel(){this.setLayout(new GridLayout(8,1));// 初始化各种按钮JCheckBox checkBox = new JCheckBox("复选按钮");JButton button = new JButton("打开文件");button.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){JFileChooser file = new JFileChooser();int result = file.showOpenDialog(new JPanel());if (result ==file.APPROVE_OPTION){String fileName = file.getSelectedFile().getName();String dir = file.getCurrentDirectory().toString();JOptionPane.showConfirmDialog(null,dir+"\\"+fileName,"选择的文件",JOptionPane.YES_OPTION);}}});//////////////////////////////////////////public//////////////////////////////////////////JToggleButton toggleButton = new JToggleButton("双态按钮");ButtonGroup buttonGroup = new ButtonGroup();JRadioButton radioButton1 = new JRadioButton("单选按钮1",false);JRadioButton radioButton2 = new JRadioButton("单选按钮2",false);// 组合框的处理JComboBox comboBox = new JComboBox();comboBox.setToolTipText("点击下拉列表增加选项");comboBox.addActionListener(new ActionListener(){public void actionPerformed(ActionEvent e){JComboBox comboBox =(JComboBox)e.getSource();comboBox.addItem("程序员");comboBox.addItem("分析员");}});// 列表框的处理DefaultListModel litem = new DefaultListModel();litem.addElement("香蕉");litem.addElement("水果");JList list = new JList(litem);list.addListSelectionListener(new ListSelectionListener (){public void valueChanged(ListSelectionEvent e){JList l = (JList)e.getSource();Object s= l.getSelectedValue();JOptionPane.showMessageDialog(null,s,"消息框",JOptionPane.YES_OPTION);}});// 增加按钮组buttonGroup.add(radioButton1);buttonGroup.add(radioButton2);// 增加各种按钮到JPanel中显示add(button);add(toggleButton);add(checkBox);add(radioButton1);add(radioButton2);add(comboBox);add(list);this.setBorder(new EtchedBorder(EtchedBorder.LOWERED,Color.LIGHT_GRAY, Color.blue));}}/////////////////////////////////////////////////////////////////////////////*** 中间层模块,继承JPanel,初始化页签,并在页签中设置文本区,表格,* 文本区上下用分隔条分隔* JPanel--+* -JTabbedPane--+* --Draw --JTable -JTextAreas -JText --JPopupMenu*/class CenterPanel extends JPanel{public CenterPanel(){JTabbedPane tab = new JTabbedPane(JTabbedPane.TOP);JTextField textField = new JTextField("文本域,点击打开<文件按钮>可选择文件"); textField.setActionCommand("textField");JTextPane textPane = new JTextPane();textPane.setCursor(new Cursor(Cursor.TEXT_CURSOR));textPane.setText("编辑器,试着点击文本区,试着拉动分隔条。