java学习——60.文本编辑组件事件
本篇在上篇(java学习——59.文本编辑组件)的基础上介绍文本编辑组件的事件。
文本编辑组件可以响应的事件有两种:
1、CaretEvent事件
此事件是在文本行或者文本区中只要有任何修改,便会触发此事件。
注册此事件监听器的方法如下:
public void addCaretListener(CaretListener l);
此事件的接口及所包含的方法如下:
public interface CaretListener extends EventListener //文本编辑事件监听器接口
{
public void caretUpdate(CaretEvent ev);
}
2、ActionEvent事件
此事件是在文本编辑组件中输入内容后,按下Enter键时会触发。
此事件在之前介绍按钮事件时曾用过,其注册监听器接口及实现的方法与前相同。也将之再一并写在这里。
注:此事件仅对文本行有效,对文本区是无效的,因为文本区中按下Enter键相当于是换行。
注册此事件监听器的方法如下:
public void addActionListener(ActionListener listener);
此事件的接口及所包含的方法如下:
public interface ActionListener extends EventListener //文本编辑事件监听器接口
{
public void actionPerformed(ActionEvent ev);
}
3、例:以上篇中例子为例介绍事件处理。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
public class LoginJFrame extends JFrame implements CaretListener,ActionListener{
private JTextField username;
private JPasswordField password;
private JTextArea shuoming;
public LoginJFrame(){
super("登录");
this.setLocationRelativeTo(null);
this.setSize(250,160);
this.setVisible(true);
this.setLayout(new GridLayout(2,1));
JPanel user_panel=new JPanel();
user_panel.add(new JLabel("请输入用户名:"));
username=new JTextField("zxx",10);
username.addCaretListener(this);//添加修改事件监听器
username.addActionListener(this);//添加Enter事件监听器
user_panel.add(username);
user_panel.add(new JLabel("请输入密 码:"));
password=new JPasswordField("123456",10);
password.addCaretListener(this);//添加修改事件监听器
password.addActionListener(this);//添加Enter事件监听器
user_panel.add(password);
this.getContentPane().add(user_panel);
JPanel area_panel=new JPanel();
shuoming=new JTextArea("hello,zxx",3,20);
shuoming.setLineWrap(true);
shuoming.addCaretListener(this);//添加修改事件监听器
area_panel.add(shuoming);
this.getContentPane().add(area_panel);
}
publicvoid actionPerformed(ActionEvent e){
shuoming.setText("您输入的用户名是:"+username.getText()+"\n您输入的密码是:"+password.getText());
shuoming.setForeground(Color.red);
}
publicvoid caretUpdate(CaretEvent e){
if(e.getSource()==username)
shuoming.append(username.getText());
if(e.getSource()==password)
shuoming.append(password.getText());
}
publicstaticvoid main(String args[]){
new LoginJFrame();
}
}
其运行结果如下:
(1)修改文本行中的值会触发事件。

(2)按Enter键后也会触发事件。
