当前位置: 首页 > 面试题库 >

Java中的事件处理和Java中actionPerformed方法的执行

寇宏义
2023-03-14
问题内容

我在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该类中的任何(非)方法访问它。



 类似资料:
  • 问题内容: 我想在JFrame中听鼠标移动和单击。为此,我添加了一个实现如下的MouseListener :( View类的整个代码在https://gist.github.com/2837224,Board类在https://gist.github.com/2837231) 有趣的是,mousePressed()运行良好,但其他两个运行不正常(移动鼠标时控制台上没有任何显示)。有人可以告诉我我在

  • 本文向大家介绍java处理按钮点击事件的方法,包括了java处理按钮点击事件的方法的使用技巧和注意事项,需要的朋友参考一下 不同的事件源可以产生不同类别的事件。例如,按钮可以发送一个ActionEvent对象,而窗口可以发送WindowEvent对象。 AWT时间处理机制的概要: 1. 监听器对象是一个实现了特定监听器接口(listener interface)的类的实例。 2. 事件源是一个能够

  • 如果我有以下代码: 对该循环中某个处理程序的所有调用是并行执行还是顺序执行?如果是顺序的,那么要获得并行执行,正确的方法是什么? 当做

  • 我已经在JList上有一个这样的自定义控件库 但是我希望Jlist有滚动条,所以我将自定义控件的超类更改为JScrollPane并将JList添加到其中。像这样的代码 好吧,如果MyClass扩展了JList,在JFrame中我可以将MouseListener添加到MyClass对象中,在mouseClick中我比较MouseEvent getSource是MyClass的一个实例并调用MyCla

  • 本文向大家介绍C#处理Access中事务的方法,包括了C#处理Access中事务的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#处理Access中事务的方法。分享给大家供大家参考。具体如下: Access不能像SQL server一样直接执行多条语句,但是把多条语句绑成事务还是可以一起执行的. 所谓事务,就是把多件事情当做一件事情来处理。也就是大家同在一条船上! 由一个事务来完成