Java中的事件处理和Java中actionPerformed方法的执行
我在Java中为simpleGUI编写了一个小代码。
package guidemo1;import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
public class GuiDemo1 implements ActionListener{
JButton button;
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
GuiDemo1 gui=new GuiDemo1();
gui.go();
}
public void go()
{
JFrame frame=new JFrame();
button=new JButton();
frame.getContentPane().add(button);
button.addActionListener(this);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300, 200);
frame.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
//throw new UnsupportedOperationException("Not supported yet.");
button.setText("I've been clicked");
}
}
我是JAVA的新手。与此程序相关的问题很少。
有人可以解释一下actionPerformed方法如何在没有任何调用的情况下执行吗?
在这里,我在go()方法的本地定义了框架对象,我们在actionPerformed中使用了按钮,这是另一种方法,那怎么可能呢?按钮没有嵌入框架吗?
谢谢..
回答:
有人可以解释一下actionPerformed方法如何在没有任何调用的情况下执行吗?
GUI框架Swing在后台运行动作处理代码。每当按下按钮或用户以其他方式与GUI交互时,Swing都会通过许多Listener
界面之一通知您的应用程序。为了接收这些事件,您的类需要实现适当的Listener
接口,并在其感兴趣的每个组件上注册为侦听器。
您的类实现该ActionListener
接口并调用addActionListener
以将其自身注册到该按钮。单击按钮后,Swing将尝试ActionListener
通过调用所有actionPerformed
方法来通知所有已注册的。这就是“魔术”发生的方式。
在这里,我在go()方法的本地定义了框架对象,我们在actionPerformed中使用了按钮,这是另一种方法,那怎么可能呢?按钮没有嵌入框架吗?
您可以add
单击框架内容窗格中的按钮-这会将按钮放置在 布局中 的框架中,而不是 代码中 。因为您button
通过将JButton
button;任何方法放在外部来声明为实例变量,所以仍可以从static
该类中的任何(非)方法访问它。
以上是 Java中的事件处理和Java中actionPerformed方法的执行 的全部内容, 来源链接: utcz.com/qa/425446.html