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

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到底指哪个对象啊?

    

hitman
浏览 2657回答 1
1回答

尧叔

先回答第二个问题 :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");         }               }没看源码,这里应该是用到了观察者模式。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java