Thinking in Java 第22章 图形化用户界面 【捕获事件】

来源:互联网 发布:九城软件电话 编辑:程序博客网 时间:2024/05/16 11:45

//声明:部分内容引自《Java编程思想(第四版)》机械工业出版社

对每个监听器类只使用一个实例的时候,把 ActionListener 实现成匿名内部类会更方便。

例:

// Button2b.java// Using anonymous inner classes.package net.mindview.util;import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import static net.mindview.util.SwingConsole.run;/** * Created by JT on 2016/7/2. */public class Button2b extends JFrame {    private JButton        b1 = new JButton("Button 1"),        b2 = new JButton("Button 2");    private JTextField txt = new JTextField(10);    private ActionListener bl = new ActionListener() {        @Override        public void actionPerformed(ActionEvent e) {            String name = ((JButton) e.getSource()).getText();            txt.setText(name);        }    };            public Button2b(){                b1.addActionListener(bl);                b2.addActionListener(bl);                setLayout(new FlowLayout());                add(b1);                add(b2);                add(txt);            }    public static void main(String[] args) {        run(new Button2b(), 200, 150);    }}

练习5

使用 SwingConsole 类编写一个应用程序,它包括一个文本域和三个按钮,单击每个按钮的时候,在文本域中显示不同的文字。

package net.mindview.util;import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import static net.mindview.util.SwingConsole.*;/** * Created by JT on 2016/7/2. */public class practice_5 extends JFrame {    private JButton        b1 = new JButton("hello"),        b2 = new JButton("byebye"),        b3 = new JButton("thanks");    private JTextField txt = new JTextField(10);    private ActionListener actlis = new ActionListener(){        @Override        public void actionPerformed(ActionEvent e){            String s = ((JButton)e.getSource()).getText();            txt.setText(s);        }    };    public practice_5(){        b1.addActionListener(actlis);        b2.addActionListener(actlis);        b3.addActionListener(actlis);        setLayout(new FlowLayout());        add(b1);        add(b2);        add(b3);        add(txt);    }    public static void main(String[] args){        run(new practice_5(),200,300);    }}

运行结果

0 0
原创粉丝点击