gpt4 book ai didi

java - actionPerformed 执行后会发生什么?

转载 作者:行者123 更新时间:2023-11-29 03:18:11 25 4
gpt4 key购买 nike

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 以便我可以在不关闭并再次打开程序的情况下开始一个新的阶段?

最佳答案

主要显示 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() { ... }

这种难以遵循的控制流(因为不完整)需要一个好的命名和有组织的来源。

关于java - actionPerformed 执行后会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25268040/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com