我目前正在学习如何使用 ActionListeners,我有几个关于应该如何使用的问题。
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setLayout(new GridLayout(0,1));
frame.setSize(250,250);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(0,1));
final JTextField text1 = new JTextField(" ",10);
final JTextField text2 = new JTextField(" ",10);
final JTextField text3 = new JTextField(" ",10);
final JTextField text4 = new JTextField(" ",10);
panel.add(text1);
panel.add(text2);
panel.add(text3);
panel.add(text4);
ActionListener a = new ActionListener(){
public void actionPerformed(ActionEvent e){
text4.setText(text1.getText()+""+text2.getText()+""+text3.getText());
}
};
JButton buton = new JButton("Go");
buton.addActionListener(a);
frame.add(panel);
frame.add(buton);
frame.revalidate();
}
鉴于示例中的代码,这是我在主类中使用的唯一方法。正如你所看到的监听器,我目前正在使用一些在我的 main() 中实现的匿名监听器。问题是......我使用它们是因为单击框架中的按钮实际上需要更改另一个元素的内容。我的问题是:你可以让听众匿名,同时还能使用其他组件吗?我在想的是在另一个类中移动按钮的 ActionListener 实现,但是我如何到达其他元素的属性?例子 :
class listener implements ActionListener{
public void actionPerformed(ActionEvent e){
text4.setText(text1.getText()+""+text2.getText()+""+text3.getText());
}
}
然后在我的 main() 类中,我想简单地调用:
listener l = new listener();
buton.addActionListener();
并且仍然能够使这个外部侦听器访问主类中元素的属性。