第十三周课程总结
课程总结
18.9 文本组件: JTextComponent
在Swing中也提供了同样的文本框组件,但是文本输入组件在Swing中也分为好几种:
单行文本框: JTextField
密码文本框: JPasswordField
多行文本框: JTextArea
1 单行文本输入组件:JTextField
范例:使用JTextField定义普通文本框
package text;
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
public class JTextDemo01{
public static void main(String args[]){
JFrame jframe = new JFrame("Welcome to CSDN");
JTextField name = new JTextField(30); //定义文本框,并指定内容
JTextField noed = new JTextField("CSDN", 10); //定义文本框,指定内容和长度
JLabel nameLabel = new JLabel("输入用户名:"); // 定义标签
JLabel noedLabel = new JLabel("不可编辑文本:");
noed.setEnabled(false); //此文本框不可编辑
name.setColumns(30); //设置长度,但此时不起作用
noed.setColumns(10);
jframe.setLayout(new GridLayout(2, 2)); //设置容器的布局管理器
jframe.add(nameLabel);
jframe.add(name);
jframe.add(noedLabel);
jframe.add(noed);
jframe.setSize(300, 100);
jframe.setLocation(300, 200);
jframe.setVisible(true);
}
}
以上程序使用了GridLayout的排版格式,第一个文本框是可编辑的;第二个文本框是不可编辑的。
2 密文输入组件:JPasswordField
JTextField是使用明文方式进行数据显示的,如果现在需要将回显的内容设置成其他字符,则可以使用JPasswordField类。
范例:设置密文显示框
package test;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
public class JPasswordDemo01{
public static void main(String args[]){
JFrame jframe = new JFrame("Welcome to CSDN");
JPasswordField jpf1 = new JPasswordField();
JPasswordField jpf2 = new JPasswordField();
jpf2.setEchoChar('#');
JLabel label1 = new JLabel("默认的回显示:");
JLabel label2 = new JLabel("回显设置为“#”:");
label1.setBounds(10, 10, 100, 20);
label2.setBounds(10, 40, 100, 20);
jpf1.setBounds(110, 10, 80, 20);
jpf2.setBounds(110, 40, 50, 20);
jframe.setLayout(null);
jframe.add(label1);
jframe.add(jpf1);
jframe.add(label2);
jframe.add(jpf2);
jframe.setSize(300, 100);
jframe.setLocation(300, 200);
jframe.setVisible(true);
}
}
第一个密文框使用的是默认的回显字符;而第二个密文框是将“#” 设置成为回显字符!
3 多行文本输入组件:JTextArea
范例:使用JTextArea
package test;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextArea;
public class JTextAreaDemo01{
public static void main(String args[]){
JFrame jframe = new JFrame("Welcome to CSDN");
JTextArea jta = new JTextArea(3, 10);
JLabel label = new JLabel("多行文本域:");
label.setBounds(10, 10, 120, 20);
jta.setBounds(130, 10, 150, 100);
jframe.setLayout(null);
jframe.add(label);
jframe.add(jta);
jframe.setSize(300, 150);
jframe.setLocation(300, 200);
jframe.setVisible(true);
}
}
上面程序只是简单地构造了一个文本域。
18.10 事件处理
1 事件和监听器
EventObject类的定义格式如下所示:
public class EventObject extends Object implements Serializable{
public EventObject(Object source){ //构造一个发生事件的对象
}
public Object getSource(){ //返回一个事件对象
}
public String toString(){ //得到信息
}
}
在这个类中定义了3个方法,其中可以通过getSource()方法获得发生此事件的源对象!
大部分图形界面的事件处理类和接口都保存在java.awt.event包中。
2 窗体事件
WindowListener是专门处理窗体的事件监听接口。一个窗体的所有变化,如窗口的打开、关闭等都可以使用这个接口进行监听。
3 监听适配器
在整个事件处理中提供了很多的Adapter(适配器)类,方便用户进行事件处理的实现。
以WindowAdapter类为例,用户只要继承了此类,就可以根据自己的需要覆写所需要的方法,如果现在只关心窗口关闭方法,则只需要在子类中覆写windowClosing()方法即可!!
范例:通过WindowAdapter实现监听
package test;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class MyWindowAdapterEventHandle extends WindowAdapter{
public void windowClosing(WindowEvent e){
System.out.println("window --> closing!!!");
System.exit(1);
}
}
4 动作事件及监听处理
要想让一个按钮变得有意义,就必须使用事件处理。在Swing的事件处理中,可以使用ActionListener接口处理按钮的动作事件。 ActionListener接口只定义了一个方法:
interface ActionListener{
void actionPerformed(ActionEvent e);
}
因为动作事件有可能有多种事件源调用,所以为了保险起见,在代码操作之前增加了一下验证:
if(e.getSource() == button){ //判断触发源是否是按钮
}
直接使用了地址比较方式,如果操作的事件源是由按钮触发的。则执行语句。当然,此时代码是在一个类中完成,如果现在换成了两个类,则可以通过instanceof关键字来判断操作的数据源类型,如下所示:
if(e.getSource() instanceof JButton){ //判断触发源是否是按钮
}
5 键盘事件及监听处理
在Swing的事件处理中也可以对键盘的操作进行监听。需要使用KeyListener接口!
如果要取得键盘输入的内容,则可以通过KeyEvent取得。
6 鼠标事件及监听处理
MouseListener接口可以对一个鼠标的操作进行监听,如鼠标按下、松开等等操作。该接口定义了以下方法:
在每个事件触发后都会产生MouseEvent事件,此事件可以得到鼠标的相关操作。MouseEvent类的常用方法及常量如下图所示:
7 鼠标拖拽事件及监听处理
在Swing的事件处理中可以使用MouseMotionListener接口来完成鼠标的拖拽操作。
18.11 单选按钮: JRadioButton
JRadioButton类的常用方法如下图所示:
在单选按钮操作中,可以使用ItemListener接口进行事件的监听。
此方法中存在ItemEvent事件,ItemEvent类的常用方法及常量
18.12 复选框:JCheckBox
JCheckBox类的常用方法:
JCheckBox的其他使用方法和JRadioButton类的操作类似.JCheckBox和JRadioButton的事件处理监听接口是一样的,都是使用ItemListener接口。二者的常用方法都在上面。