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"); } }
没看源码,这里应该是用到了观察者模式。
添加回答
举报
0/150
提交
取消