第三章 Swing/JFC的事件模型基础
任何支持GUI的操作环境都会不断地监听事件。当按下键盘或者单击鼠标的时候,便会触发一个相应的事件,操作环境把这些事件报告给正在运行的程序,接着程序决定如何响应这些事件。在java中,开发人员能够控制各种事件,可以把迅速响应事件的对象指派成一个事件监听器。
下面介绍一下常用事件对象及其作用。
AWTEvent:所有AWT事件的根事件类。
ConnectionEvent:封装与连接有关信息的事件。
ChangeEvent :封装状态改变信息的事件。
ListSelectionEvent:表示当前选择中更改的特征事件。
CaretEvent:封装文本区中的光标改变信息的事件。
ListDataEvent:定义一个封装列表更改的事件。
HyperlinkEvent:封装与超文本连接有关的事件。
TableColumnModelEvent:某一个表的列模型已发生改变。
TableModelEvent:通知侦听器某一个表模型已发生改变。
TreeExpansionEvent:用于表示树中的单个路径的事件。
TreeModelEvent:封装描述树模型更改的信息。
TreeSelectionEvent:描述当前选择的更改事件。
上面所述的,只是一些常用的事件对象和作用,当遇到那些不常用的时,应该第一时间查阅JDK。
在了解了事件处理的工作机制以后,现在深入讨论java中的事件处理。Java中的事件处理是面向对象的,所有事件都是从java.util包中的EventObject类扩展来的。EventObject有一个子类AWTEvent,它是所有AWT事件的父类。
对于java开发人员来说,有些AWT事件在实际中应用不多。我们所讲述的,只是在实际中会被传到舰艇气得AWT事件类型。
第四章 Swing常用基本控件
JLabe类
JLabel myjLabel=new JLabel();
构造器
JLabel():创建无图像并且标题为空的JLabel
JLabel(Icon image): 创建具有指定图像的JLabel
JLabel(String text):创建具有指定文本的JLabe
JLabel(String text,Icon image,int horizontalAlignment()):具有指定文本,图像,水平对齐德JLabel
JLabel(String text,int horizontalAlignment()):具有指定文本和水平对齐的JLabel
常用方法
getText():获取该标签所显示的文本字符串。
setText(String text):设置字符串。
getIcon():获取该标签所显示的图像。
setIcon(Icon icon):定义此组件将要现实的图标。
getVerticalAlignment():获取标签内容沿y轴的对齐方式。
setVerticalAlignment(int alignment):设置。
getHorizontalAlignment():获取,x轴。
setHorizontalAlignment(int alignment):设置。
getLabelFor():获取将标签添加到的组件。
setLabelFor(Component c):设置将标签添加到的组件。
在NetBeans中使用JLabel
项目——〉新建Jframe(DemoJlabelFrame)——〉添加JLabel(jLabelImage),text:演示图片。单击Icon属性右侧的按钮,添加图片。——〉右击,选择“事件/Mouse/mouseClicked”,然后添加如下代码:
This.jLabelImage.setVerticalTextPosition(SwingConstants.TOP);
JButton介绍
Swing中最简单的按钮类型,可以包含文本或图标,能够响应单击事件。
创建十分简单:
JButton myButton=new JButton(“确定”);
构造器:
JButton():创建没有文本或图标的按钮。
JButton(String s):有文本。
JButton(Icon icon):有图标。
JButton(String s,Icon icon)
常用方法
addActionListener()
removeActionListener(ActionListener l)
getAction()
getModel()
setModel(ButtonModel newModel)
getMargin()
setMargin(Insets m)
getSelectedIcon()
setSelectedIcon(Icon selectedIcon)
在NetBeans中JButton的使用
新建JFrame(DemoJButtonFrame)——〉添加2个JButton,1个JLabel,分别修改变量名称为jButtonEnter,jButtonCancel,jLabelMessage。Test属性分别为:确定,取消,用户没有按下按钮。分别为两个按钮添加ActionEvent 事件。
jButtonEnter:
This.jLabelMessage.setText(“你单击了确定按钮”);
jButtonCancel:
This.jLabelMessage.setText(“你单击了取消按钮”);
Swing文本框
JtextField
用于输入单行的文字。创建很简单:
JtextField jTextFieldOne=new JtextField(“你好”);
构造器:
JTextField()
JTextField(Document doc,String text,int columns):给定存储类型和列数,还有相应的文本。
JTextField(int columns)
JTextField(String text)
JTextField(String text,int columns)
常用方法:
setDocument(Document doc)
createDefaultModel()
getColumns()
setColumns(int columns)
setFont(Font f)
addActionListener(ActionListener l)
removeActionListener(ActionListener l)
getText()
setText(String t)
在NetBeans中使用
添加JTextField(jTextFieldTest),JLabel(jLabelMessage)
在jTextFieldTest的ActionEvent下输入代码:
String getMessage=jTextFieldTest.getText();
If(getMessage.equals(“”))
{
this.jLabelMessage.setText(“你没有输入任何内容”);
}
Else
{
this.jLabelMessage.setText(“你输入的内容是:”+ getMessage)
}
Swing文本区
JTextArea是一种非常重要的文本输入控件。能够显示多行文本。
构造器:
JTextArea()
JTextArea(String text)
JTextArea(int rows,int columns)
JTextArea(String text,int rows,int columns)
JTextArea(Document doc)
JTextArea本身不具有滚动功能,如要实现该功能,需要将其添加到JScrollPane中,下面是代码:
JScrollPane myScrollPane=new JScrollPane(myTextArea);
常用方法:
setLineWrap(Boolean wrap)
getLineWrap()
insert(String str,int pos)
append(String str)
getRows()
setRows(int rows)
getColumns()
setColumns(int columns)
还有其他的一些方法,可以查阅API,在练习的过程中,也需要一点点体会。
在NetBeans中使用
代码和运行图如下:
private void jButtonNoWrapActionPerformed(java.awt.event.ActionEvent evt) {
// TODO 将在此处添加您的处理代码:
this.jTextAreaTest.setLineWrap(false);
}
private void jButtonWrapActionPerformed(java.awt.event.ActionEvent evt) {
// TODO 将在此处添加您的处理代码:
this.jTextAreaTest.setLineWrap(true);
}
Swing 单选按钮(JRadioButton)与复选框(JCheckBox)
JCheckBox
构造器
JCheckBox(Icon icon)
JCheckBox(Icon icon,Boolean selected)
JCheckBox(String text)
JCheckBox(String text,Boolean selected)
JCheckBox(String text,Icon icon)
常用方法:
isSelected()
setSelected(Boolean b)
JRadioButton
构造器
JRadioButton(Icon icon)
JRadioButton(Icon icon,Boolean selected)
JRadioButton(String text)
JRadioButton(String text,Boolean selected)
JRadioButton(String text,Icon icon)
因为单选按钮在某一时刻,一组单选按钮中只能有一个被选中,所以需要添加ButtonGroup, 然后将相应的一组单选按钮添加到ButtonGroup中。这样才可以满足在一个时刻,只有一个被选中。