概述
第九章
主要内容
-
Java Swing概述
-
通过图形用户界面(GUI:Graphics User Interface),用户和程序之间可以方便地进行交互。Java的Swing工具包中包含了许多类来支持GUI设计。如:按钮、菜单、列表、文本框等组件类,同时它还包含窗口、面板等容器类。
-
javax.swing包提供了功能更为强大的用来设计GUI的类。java.awt和javax.swing包中一部分类的层次关系的UML类图如图9.1。
-
在学习GUI编程时,必须要很好的掌握两个概念:容器类和组件类。
- javax.swing包中JComponent类是java.awt包中Container类的一个直接子类、是java.awt包中Component类的一个间接子类,学习GUI编程主要是学习掌握使用Component类的一些重要的子类及其使用方法。
-
以下是GUI编程经常提到的基本知识点 。
- Java把Component类的子类或间接子类创建的对象称为一个组件.
- Java把Container的子类或间接子类创建的对象称为一个容器.
- 可以向容器添加组件。Container类提供了一个public方法:add( ),一个容器可以调用这个方法将组件添加到该容器中。
- 容器调用removeAll()方法可以移掉容器中的全部组件;调用remove(Component c)方法可以移掉容器中参数c指定的组件。
- 注意到容器本身也是一个组件,因此可以把一个容器添加到另一个容器中实现容器的嵌套。
- 每当容器添加新的组件或移掉组件时,应当让容器调用validate()方法,以保证容器中的组件能正确显示出来
如: JFrame f=new JFrame(); JButton button=new JButton("确定") f.add(button); ……. f.remove(button);
-
-
窗口
-
Java提供的JFrame类的实例是一个底层容器,即通常所称的窗口。其他组件必须被添加到底层容器中,以便借助这个地层容器和操作系统进行信息交互。
-
JFrame类是Container类的间接子类。当需要一个窗口时,可使用JFrame或其子类创建一个对象。
-
JFrame构造方法:
- JFrame() 创建一个无标题的窗口。
- JFrame(String s) 创建标题为s的窗口。
-
常用方法:
1)public void setBounds(int a,int b,int width,int height 设置窗口的初始位置是(a,b),//即距屏幕左面a个像素、距屏幕上方b个像素;窗口的宽是width,高是height。 2)public void setSize(int width,int height) //设置窗口的大小。 3)public void setLocation(int x,int y) //设置窗口的位置,默认位置是(0,0)。 4)public void setVisible(boolean b) //设置窗口是否可见,窗口默认是不可见的。 5)public void setResizable(boolean b) //设置窗口是否可调整大小,默认可调整大小。 6)public void dispose() //撤消当前窗口,并释放当前窗口所使用的资源。 7)public void setExtendedState(int state) //设置窗口的扩展状态. 8)public void setDefaultCloseOperation(int operation) //该方法用来设置单击窗体右上角的关闭图标后,程序会做出怎样的处理。如:EXIT_ON_CLOSE 9)public void setLayout(LayoutManager mgr)// 设置此容器的布局管理器。 10)public Component add(Component comp) //将指定组件追加到此容器的尾部。 11)public void setMenuBar(MenuBar mb) //将此 frame 的菜单栏设置为指定的菜单栏。 12)public void validate() //使用 validate 方法会使容器再次布置其子组件。在修改此容器的子组件的时候(在容器中添加或移除组件,或者更改与布局相关的信息),应该调用上述方法。
-
菜单条
- JComponent类的子类JMenubar负责创建菜单条,JFrame类有一个将菜单条放置到窗口中的方法:setJMenuBar(JMenuBar bar);该方法将菜单条添加到窗口的顶端。
- 菜单条JMenuBar类构造方法:JMenuBar(); JMenuBar Mbar=new JMenuBar()
-
菜单
- 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() 得到菜单选项的数目。
-
菜单项
- JComponent类的子类JMenuItem负责创建菜
JMenuItem类的主要方法有以下几种: JMenuItem(String s) 构造有标题的菜单项。 JMenuItem(String text, Icon icon) 构造有标题和图标的菜单项 public void setAccelerator(KeyStroke keyStroke)为菜单项设置快捷键
- JComponent类的子类JMenuItem负责创建菜
-
-
常用组件与布局
-
可以使用JComponent的子类JTextField创建各种组件。
-
利用组件可以完成应用程序与用户的交互及事件处理等。
-
也可以在命令行窗口反编译组件即时查看组件所具有的属性及常用方法,例如:
C:>javap javax.swing.JComponent
-
也可以查看类库帮助文档.例如下载Java类库帮助文档:
jdk-6-doc.zip。
C:>javap javax.swing.JTextField
-
常用组件
- 文本框:
-
由JComponent的子类JTextField创建文本框。
-
构造函数:JTextField( ) ; JTextField(int columns) ;
-
常用方法:
public String getText(); public void setText(String t);
-
文本区:
- 由JComponent的子类JTexArea创建文本区。
- 构造函数:JTextArea() ;JTextArea(int rows, int columns)
- 常用方法:
public String getText(); public void setText(String t);
-
按钮:
- 由JComponent的子类JButton类用来创建按钮。
- 构造函数:JButton() ; JButton(String text) ;
- 常用方法:
public void addActionListener(ActionListener l);
-
标签:
- 由JComponent的子类JLabel类用来创建标签。
- 构造函数:JLabel() ; JLabel(String text) ; JLabel(Icon image) ;
- 常用方法:
public String getText(); public void setText(String t);
-
选择框:
- 由JComponent的子类JCheckBox类用来创建选择框
- 构造函数: JCheckBox() ;JCheckBox(String text) ;
- 常用方法:
public void addItemListener(ItemListener l) public void addActionListener(ActionListener l) ItemListener接口中:Object getItemSelectable()相当于getSource(); public int getStateChange(); 若被选中SELECTED/DESEELCTED
-
单选按钮:
- 由JComponent的子类JRadioButton类用来创建单项选择框。
- 构造函数: JRadioButton() ; JRadioButton(String text) ;
- 常用方法:
public void addItemListener(ItemListener l)
-
下拉列表:
- 由JComponent的子类JComboBox类用来创建下拉列表。
- 构造函数:JComboBox() ; JComboBox(Object[] items)
- 常用方法:
public void addItemListener(ItemListener l) public Object getSelectedItem(); public int getSelectedIndex()
-
密码框:
- 由JComponent的子类JPasswordField创建密码框.
- 构造函数:JPasswordField() ; JPasswordField(int columns)
- 常用方法:
public String getText(); public void setText(String t); public void setEchoChar(char c)使用该方法重新设置回显字符. public char[] getPassword()方法可以返回实际的密码
-
- 文本框:
-
当把组件添加到容器中时,希望控制组件在容器中的位置,这就需要学习布局设计的知识。
-
我们将分别介绍java.awt包中的FlowLayout、BorderLayout、CardLayout、GridLayout布局类和java.swing.border包中的BoxLayout布局类
-
容器可以使用方法:
setLayout(布局对象);
-
来设置自己的布局,控制组件在容器中的位置
-
-
处理事件
- 学习组件除了要熟悉组件的属性和功能外,一个更重要的方面是学习怎样处理组件上发生的界面事件。当用户在文本框中键入文本后按回车键、单击按钮、在一个下拉式列表中选择一个条目等操作时,都发生界面事件。
- 程序有时需对发生的事件作出反应,来实现特定的任务,例如,用户单击一个名字叫“确定”或名字叫“取消”的按钮,程序可能需要作出不同的处理。
-
使用MVC结构
- 模型-视图-控制器(Model-View-Controller),简称为MVC。
- MVC是一种先进的设计结构,其目的是以会话形式提供方便的GUI支持。
- MVC是一种通过三个不同部分构造一个软件或组件的理想办法:
- 模型(model) 用于存储数据的对象。
- 视图(view) 为模型提供数据显示的对象。
- 控制器(controller)处理用户的交互操作,对于用户的操作作出响应,让模型和视图进行必要的交互,即通过视图修改、获取模型中的数据;当模型中的数据变化时,让视图更新显示。
-
对话框
- JDialog类和JFrame都是Window的子类,二者的实例都是底层容器。
- JDialog类创建的对话框必须要依赖于某个窗口。
- 对话框分为无模式和有模式两种。
- 有模式的对话框:当这个对话框处于激活状态时,只让程序响应对话框内部的事件,而且将堵塞其它线程的执行,用户不能再激活对话框所在程序中的其它窗口,直到该对话框消失不可见。
- 无模式对话框:当这个对话框处于激活状态时,能再激活其它窗口,也不堵塞其它线程的执行。
-
发布GUI程序
- 可以使用jar.exe把一些文件压缩成一个JAR文件,来发布我们的应用程序。
- 生成一个Jar文件的步骤如下:
- 首先用文本编辑器(比如Windows下的记事本)编写一个清单文件 ,扩展名为.mf,如Mymoon.mf 。
- 生成JAR文件
- 如果目录test下的字节码文件刚好是应用程序需要的全部字节码文件,也可以如下生成JAR文件:
D:testjar cfm Tom.jar Mymoon.mf *.class
可以将Tom.jar文件复制到任何一个安装了java运行环境的计算机上,只要用鼠标双击该文件就可以运行该java应用程序了。
- 如果目录test下的字节码文件刚好是应用程序需要的全部字节码文件,也可以如下生成JAR文件:
重点和难点
-
重点:Swing包中的各种组件,各种布局和事件处理器的应用
-
难点:各种事件处理器的使用
总结
-
掌握组件类和容器类的概念。
-
Java把Component类的子类或间接子类创建的对象称为一个组件
-
Java把Container的子类或间接子类创建的对象称为一个容器.
-
可以向容器添加组件。
- Container类提供了一个public方法:add( ),一个容器可以调用这个方法将组件添加到该容器中。
-
容器调用removeAll()方法可以移掉容器中的全部组件;调用remove(Component c)方法可以移掉容器中参数c指定的组件。
-
注意到容器本身也是一个组件,因此可以把一个容器添加到另一个容器中实现容器的嵌套。
-
每当容器添加新的组件或移掉组件时,应当让容器调用validate()方法,以保证容器中的组件能正确显示出来
-
-
掌握各种组件的特点和使用方法。
//文本框:由JComponent的子类JTextField创建文本框。 //构造函数: JTextField( ) ; JTextField(int columns) ; //常用方法: public String getText(); public void setText(String t); //文本区:由JComponent的子类JTexArea创建文本区。 //构造函数: JTextArea() ; JTextArea(int rows, int columns) //常用方法: public String getText(); public void setText(String t); //按钮:由JComponent的子类JButton类用来创建按钮。 //构造函数: JButton() ; JButton(String text) ; //常用方法: public void addActionListener(ActionListener l); //标签:由JComponent的子类JLabel类用来创建标签。 //构造函数: JLabel() ; JLabel(String text) ; JLabel(Icon image) ; //常用方法: public String getText(); public void setText(String t); //选择框:由JComponent的子类JCheckBox类用来创建选择框 //构造函数: JCheckBox() ; JCheckBox(String text) ; //常用方法: public void addItemListener(ItemListener l) public void addActionListener(ActionListener l) //单选按钮:由JComponent的子类JRadioButton类用来创建单项选择框。 //构造函数: JRadioButton() ; JRadioButton(String text) ; //常用方法: public void addItemListener(ItemListener l) //下拉列表:由JComponent的子类JComboBox类用来创建下拉列表。 //构造函数: JComboBox() ; JComboBox(Object[] items) //常用方法: public void addItemListener(ItemListener l) public Object getSelectedItem(); public int getSelectedIndex() //密码框:由JComponent的子类JPasswordField创建密码框. //构造函数: JPasswordField() ; JPasswordField(int columns) //常用方法: public String getText(); public void setText(String t); public void setEchoChar(char c) //使用该方法重新设置回显字符. public char[] getPassword() //方法可以返回实际的密码
-
本章重点掌握组件上的事件处理,Java处理事件的模式是:事件源、监视器、处理事件的接口。
-
事件源 : 能够产生事件的对象都可以成为事件源 .
-
监视器 : 事件源通过调用相应的方法将某个对象注册为自己的监视器。
- 对于文本框,这个方法是:
addActionListener(监视器)
; - java语言中监视器都是使用接口来实现的。
- 事件源注册监视器之后,相应的操作就会导致相应的事件的发生,并通知监视器,监视器就会作出相应的处理。
- 对于文本框,这个方法是:
-
处理事件的接口:
- 监视器负责处理事件源发生的事件。
- 监视器是一个对象,为了处理事件源发生的事件,监视器这个对象会自动调用接口中一个方法来处理事件。
- Java规定:为了让监视器这个对象能对事件源发生的事件进行处理,创建该监视器对象的类必须声明实现相应的接口,那么当事件源发生事件时,监视器就自动调用被类重写的某个接口方法
-
最后
以上就是真实美女为你收集整理的JAVA 第九章的全部内容,希望文章能够帮你解决JAVA 第九章所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复