事件关联

来源:互联网 发布:gta5优化补丁3dm 编辑:程序博客网 时间:2024/06/10 04:56

JAVA里事件关联采用的监听机制
事件开发步骤:

1. 确定事件源2. 确定监听器3. 注册:建立事件源和监听器的联系

代码演示

import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;public class MyFrame extends JFrame implements ActionListener {      //取文本框的内容,必须把文本框做成属性      private loveTxt nameTxt=new loveTxt("姓名",200,150,this);      public MyFrame() {            this.setLayout(null);            // 方法1            JButton j = new JButton("确定");            j.setBounds(100, 100, 60, 40);            // 注册,实现按钮与监听器的关联,此方法为类库方法,多态调用            j.addActionListener(new MyEvent());            this.add(j);            // 方法2 另外建一个lovoButton类 此类是继承按钮的窗口类,同时也是实现监听的接口,this表示            lovoButton l = new lovoButton("提交", 200, 200, this);            l.addActionListener(this);            // 方法3 使用直接书写匿名内部类,一般使用此种方式创建监听            lovoButton l1 = new lovoButton("添加", 250, 250, this);            l1.addActionListener(new ActionListener() {                  @Override                  public void actionPerformed(ActionEvent e) {                        System.out.println("匿名内部类");                  }            });            //获取设置文本框内容            lovoButton l2=new lovoButton("加入", 300, 300, this);            l2.addActionListener(new ActionListener() {                  @Override                  public void actionPerformed(ActionEvent e) {                        //获取文本框数据getText                        String info=nameTxt.getText();                        System.out.println(info);//                      //设置文本框数据//                      nameTxt.setText("ttt");                  }            });            this.setVisible(true);            this.setSize(600, 400);            this.setDefaultCloseOperation(3);            this.setLocationRelativeTo(null);      }      public static void main(String[] args) {            MyFrame m = new MyFrame();      }      @Override      public void actionPerformed(ActionEvent e) {            System.out.println("类继承窗体并实现事件关联");      }}
import java.awt.event.ActionEvent;import java.awt.event.ActionListener;//实现监听接口public class MyEvent implements ActionListener{      @Override      public void actionPerformed(ActionEvent e) {            System.out.println("事件关联");      }}
import java.awt.Container;import javax.swing.JButton;//按钮组件public class lovoButton extends JButton{      public lovoButton(String txt,int x,int y,Container con){            this.setText(txt);            this.setBounds(x, y, 60, 40);            con.add(this);      }}
import java.awt.Container;import javax.swing.JLabel;import javax.swing.JTextField;//文本框组件public class loveTxt extends JTextField{      public loveTxt(String text,int x,int y,Container con) {            JLabel j1=new JLabel(text);            j1.setBounds(x, y, 80, 20);            con.add(j1);            this.setBounds(x+80, y, 120, 20);            con.add(this);      }}

内部类中访问外部类对象:外部类名.this.
内部类能访问属性,不能访问局部变量,所以只要要操作的事件关联的文本框和标签都需设置成属性
如果事件当中要用到的就尽量做成属性(成员变量)

切换窗体需要先卸载当前窗体,需要使用 dispose方法 为卸载当前窗体

0 0
原创粉丝点击