为了账号安全,请及时绑定邮箱和手机立即绑定

本人初学者,JAVA里监听事件函数为什么不需要在main函数里调用就能执行?

本人初学者,JAVA里监听事件函数为什么不需要在main函数里调用就能执行?

hitman 2017-04-01 20:45:18
public class SimpleGUI extends JFrame implements ActionListener { Container c=getContentPane(); private JPanel inputPanel =new JPanel(); private JLabel prompt=new JLabel("input your name"); private JTextField inField=new JTextField(10); private JTextArea display=new JTextArea(10, 30); private JButton goButton=new JButton("click for greeting"); public SimpleGUI(String title){ buildGUI(); setSize(200, 150); setLocation(100, 150); setTitle(title); pack(); setVisible(true); } public void buildGUI(){ //c.setLayout(new BorderLayout()); c.add("Center",display); inputPanel.add(prompt); inputPanel.add(inField); inputPanel.add(goButton); c.add("South", inputPanel); goButton.addActionListener(this); } public void actionPerformed(ActionEvent e) { if(e.getSource()==goButton){ String name=inField.getText(); display.append("your name is "+name+"\n"); } } public static void main(String[] args) { new SimpleGUI("MY GUI"); } }    比如这段程序里,ActionListener接口提供的actionPerformed函数,main函数里没有调用但可以执行。    还有,actionPerformed函数里的this到底指哪个对象啊?    
查看完整描述

1 回答

?
尧叔

TA贡献77条经验 获得超201个赞

先回答第二个问题 :this就是SimpleGUI("MY GUI")对象。

再回答第一个问题:

public void buildGUI(){
        //goButton发布SimpleGUI("MY GUI")事件
        goButton.addActionListener(this);
    }
    //收到事件时执行
    public void actionPerformed(ActionEvent e) {
        if(e.getSource()==goButton){
            String name=inField.getText();
            display.append("your name is "+name+"\n");
        }
         
    }

没看源码,这里应该是用到了观察者模式。

查看完整回答
1 反对 回复 2017-04-01
  • hitman
    hitman
    有关第一个问题:发布SimpleGUI("MY GUI")事件,这个“事件”是指什么? 有关第二个问题:程序里把this换成new SimpleGUI("MY GUI"),会报错,这是为什么? 谢谢了!
  • 尧叔
    尧叔
    最近大批的人开始研究Java GUI 估计都是在搞毕业设计。 有求知欲是好事,但是你应该知道知识讲究循序渐进。 你问的两个问题属于面向对象基础。 第一个问题:事件就是一种抽象,比如说点击事件,创建SimpleGUI对象的事件,等都叫事件,这里应该监听的是按钮的点击事件。 第二个问题:this 就是当前实例化的这个对象,你说你初始化了半天好不容易到了注册按钮点击事件的时候,你又new SimpleGUI("MY GUI") 是不是死循环了?
  • 尧叔
    尧叔
    对,你的理解差不多。
点击展开后面1
  • 1 回答
  • 0 关注
  • 2602 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信