gpt4 book ai didi

java - 让 JFrame GUI 等待,然后在按下按钮后继续

转载 作者:行者123 更新时间:2023-12-01 18:04:58 25 4
gpt4 key购买 nike

我有一个扩展 JFrame 的 gui 类 MyGUIClass。我想用java完成以下任务。我查看了 EventQueue,但不知何故无法使事情正确。我什至不确定这是否是正确的方法。

总的来说,我想要以下事件顺序:

-> 启动 JFrame

-> 保持 JFrame 处于 Activity 状态并等待按下播放按钮。当按下按钮时,

-> 执行 main 中的其余代码,但保持 gui 处于 Activity 状态以接收来自 JFrame 的命令。

            try {
java.awt.EventQueue.invokeAndWait(new Runnable() {
public void run() {
new MyGUIClass().setVisible(true);
}
});
}
catch (Exception e) {
e.printStackTrace();
}

System.out.println("Portion to execute only after request from GUI");
}

但是上面的试验不起作用,并且 println 在 gui 运行时打印,没有来自 GUI 的任何命令。

最佳答案

您必须为单击要执行某些代码的按钮提供监听器。

但是如果你想把要执行的代码放在ma​​in中。您将需要一些包含代码或 lambda 等的匿名类。

我将在这里向您展示如何实现您想要的目标

class MyGUIClass extends JFrame {
...
// I am using Runnable to contain code you want to execute.
// You can use Function or any class/interface you want
Runnable codeToExecute;
MyGUIClass(Runnable codeToExecute){
this.codeToExecute = codeToExecute;
...
}

...
void yourGUImethod(){
...
JButton btn = new JButton(new AbstractAction(){
@Override
public void actionPerformed(ActionEvent e) {
codeToExecute.run(); // execute code on button press
}
});
yourPanel.add(btn); // Add this button to your panel
...
}

现在您可以从 main 提供执行代码

Runnable codeToExecute = () -> {     // Using lambda
System.out.println("Portion to execute only after request from GUI");
}

java.awt.EventQueue.invokeAndWait(new Runnable() {
public void run() {
new MyGUIClass(codeToExecute).setVisible(true);
}
});

关于java - 让 JFrame GUI 等待,然后在按下按钮后继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37268945/

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