【发布时间】:2021-06-14 07:25:30
【问题描述】:
我对编码相当陌生,并且在我的代码中遇到了这个问题。 我使用 Java AWT 导入创建了一个按钮。然后我使用 while 循环检查响应并希望在之后创建另一个按钮,但是 .add() 似乎不再起作用。
import java.awt.*;
import java.awt.event.*;
public class Main1
{
public static void main(String[] args)
{
Frame f = new Frame();
f.setSize(500, 500);
f.setVisible(true);
ButtonPanel bp = new ButtonPanel(f);
bp.x = null;
while (bp.x == null)
{
}
System.out.println(bp.x);
//THE ISSUE- THIS WILL NOT APPEAR AFTER BUTTON PRESS
f.add("South", new Button("REEE"));
}
}
class ButtonPanel extends Panel implements ActionListener
{
volatile String x;
public ButtonPanel(Frame f)
{
Button b = new Button("Hi");
b.addActionListener(this);
f.add("North", b);
}
public void actionPerformed(ActionEvent e)
{
x = e.getActionCommand();
}
}
过去一天左右我一直在尝试解决此问题,但似乎没有任何效果。我在其他帖子中看到人们说要使用 Wait/Notify 但是我不太确定它们是如何工作的,我想明确知道我的程序出了什么问题(尽管我仍然愿意在我的解决方案)。
任何帮助将不胜感激,非常感谢您
【问题讨论】:
-
哦,对不起,我正在测试一些东西,打算在这里删除它
-
不要像这样使用
while循环来“停止”代码执行。相反,使用回调(观察者) -
强烈建议:不要使用 AWT。 AWT 之后有两代 gui 框架:Swing 和 JavaFX。如果你想学习新东西,试试 javafx。