actionPerformed执行后会发生什么?

港口8080

执行完之后会发生什么actionPerformed执行后,有什么方法可以返回程序的主类actionPerformed吗?

这是代码示例:

public final class JavaGame extends JFrame {

    public JavaGame(){
        int x = cache();
        JButton butt = new JButton("NEW");

        newG gameX = new newG();
        butt.addActionListener(gameX);
    }

    public class gameFunction implements ActionListener{
        @Override
        public void actionPerformed(ActionEvent e){
            if(e.getSource() == butt){
                //do something logic here. Like go to another stage of the game
                JOptionPane.showMessageDialog(null, Success!");
            }
        }
    }

    public cache(){
        return 1;
    }

    public static void main(String[] args) {
        new JavaGame();
    }

}

之后actionPerformed运行,接下来会发生什么?

在我的真实代码中,actionPerformed运行,我的游戏阶段仍然相同。如何返回到main新的阶段,而无需再次关闭和打开程序?

乔普·艾根(Joop Eggen)

在主体中,您显示JFrame:

new JavaGame().setVisible(true);

然后您从main返回。

在后台运行着一个名为EDT的事件调度线程。在该线程上单击按钮,进行重绘等操作。

这应该在短时间内完成,以保持用户界面的响应性,而不是冻结。

因此,您需要工作以事件驱动:您通常可以为某些特定事件添加侦听器,例如关闭JFrame,菜单项,按钮。这些侦听器将通过事件对象进行调用,以指定发生了什么情况。您调用了addActionListener。

控制流程是使按钮单击保持响应,并在稍后进行一些艰苦的工作:

@Override
public void actionPerformed(ActionEvent evt) {
    EventQueue.invokeLater(new Runnable() {
        @Override
        public void run() {
            JavaGame.this.createANewAvatar();
        }
    });
}

然后在某个地方有一个

private void createNeewAvatar() { ... }

这种难以遵循的控制流(因为是零散的)需要良好的命名和有组织的来源。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章