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键后也会触发事件。

(0)

相关推荐