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

回到顶部