第9章 组件及事件处理
9.7Java Swing概述
Java的Swing工具包中包含了许多类来支持GUI设计。如:按钮、菜单、列表、文本框等组件类,同时它还包含窗口、面板等容器类。
javax.swing包提供了功能更为强大的用来设计GUI的类。java.awt和javax.swing包中一部分类的层次关系的UML
容器类和组件类
javax.swing包中JComponent类是java.awt包中Container类的一个直接子类、是java.awt包中Component类的一个间接子类
- Java把Component类的子类或间接子类创建的对象称为一个组件
- Java把Container的子类或间接子类创建的对象称为一个容器
- 可以向容器添加组件。Container类提供了一个public方法:add( ),一个容器可以调用这个方法将组件添加到该容器中
- 容器调用removeAll()方法可以移掉容器中的全部组件;调用remove(Component c)方法可以移掉容器中参数c指定的组件。
- 注意到容器本身也是一个组件,因此可以把一个容器添加到另一个容器中实现容器的嵌套。
- 每当容器添加新的组件或移掉组件时,应当让容器调用validate()方法,以保证容器中的组件能正确显示出来
9.2 窗口
Java提供的JFrame类的实例是一个底层容器,即通常所称的窗口。其他组件必须被添加到底层容器中,以便借助这个地层容器和操作系统进行信息交互。
JFrame类是Container类的间接子类。当需要一个窗口时,可使用JFrame或其子类创建一个对象。
JFrame构造方法
- JFrame() 创建一个无标题的窗口。
- JFrame(String s) 创建标题为s的窗口。
- public void setBounds(int a,int b,int width,int height 设置窗口的初始位置是(a,b),即距屏幕左面a个像素、距屏幕上方b个像素;窗口的宽是width,高是height。
- public void setSize(int width,int height) 设置窗口的大小
- public void setLocation(int x,int y) 设置窗口的位置,默认位置是(0,0)
- public void setVisible(boolean b) 设置窗口是否可见,窗口默认是不可见的
- public void setResizable(boolean b) 设置窗口是否可调整大小,默认可调整大小
- public void dispose() 撤消当前窗口,并释放当前窗口所使用的资源
- public void setExtendedState(int state) 设置窗口的扩展状态
- public void setDefaultCloseOperation(int operation) 该方法用来设置单击窗体右上角的关闭图标后,程序会做出怎样的处理。如:EXIT_ON_CLOSE
- public void setLayout(LayoutManager mgr) 设置此容器的布局管理器
- public Component add(Component comp) 将指定组件追加到此容器的尾部
- public void setMenuBar(MenuBar mb) 将此 frame 的菜单栏设置为指定的菜单栏
- public void validate() 使用 validate 方法会使容器再次布置其子组件。在修改此容器的子组件的时候(在容器中添加或移除组件,或者更改与布局相关的信息),应该调用上述方法。
菜单条、菜单、菜单项
1.菜单条
JComponent类的子类JMenubar负责创建菜单条,JFrame类有一个将菜单条放置到窗口中的方法:该方法将菜单条添加到窗口的顶端。
setJMenuBar(JMenuBar bar);
菜单条JMenuBar类构造方法:JMenuBar(); JMenuBar Mbar=new JMenuBar()
2.菜单
JComponent类的子类JMenu负责创建菜单。
菜单JMenu类构造方法:JMenu() ; JMenu(String s) ; JMenu m=new JMenu();
常用方法:
常用方法:
public void add(JMenuItem item) 向菜单增加由参数item指定的菜单项
public JMenuItem getItem(int n) 得到指定索引处的菜单选项。
public int getItemCount() 得到菜单选项的数目。
3.菜单项
JComponent类的子类JMenuItem负责创建菜单项,JMenuItem类的主要方法有以下几种:
JMenuItem(String s) 构造有标题的菜单项。
JMenuItem(String text, Icon icon) 构造有标题和图标的菜单项
public void setAccelerator(KeyStroke keyStroke)为菜单项设置快捷键
9. 3 常用组件与布局
可以使用JComponent的子类JTextField创建各种组件。利用组件可以完成应用程序与用户的交互及事件处理等。
常用组件
- 文本框:由JComponent的子类JTextField创建文本框
- 文本区:由JComponent的子类JTexArea创建文本区
- 按钮:由JComponent的子类JButton类用来创建按钮
- 标签:由JComponent的子类JLabel类用来创建标签
- 选择框:由JComponent的子类JCheckBox类用来创建选择框
- 单选按钮:由JComponent的子类JRadioButton类用来创建单项选择框
- 下拉列表:由JComponent的子类JComboBox类用来创建下拉列表
- 密码框:由JComponent的子类JPasswordField创建密码框
public class Example9_3 { public static void main(String args[]) { ComponentInWindow win=new ComponentInWindow(); win.setBounds(100,100,450,260); win.setTitle("常用组件"); } } import java.awt.*; import javax.swing.*; public class ComponentInWindow extends JFrame { JTextField text; JButton button; JCheckBox checkBox1,checkBox2,checkBox3; JRadioButton radio1,radio2; ButtonGroup group; JComboBox<String> comBox; JTextArea area; public ComponentInWindow() { init(); setVisible(true); setDe