【发布时间】:2018-08-01 07:47:29
【问题描述】:
我正在创建某种菜单(在摇摆中),这是我的代码
public class JavaApplication5
{
public static void main(String[] args)
{
NewJFrame frame = new NewJFrame();
frame.setVisible(true);
if(frame.getRunning() == true)
{
System.out.println("why it doesn't work");
}
}
}
这是我的菜单类:
public class NewJFrame extends javax.swing.JFrame
{
public boolean isRunning = false;
public void setRunning(boolean isRunning)
{
this.isRunning = isRunning;
}
public boolean getRunning()
{
return isRunning;
}
public NewJFrame()
{
initComponents(); //this refers to auto-generated code by swing library
}
//some swing stuff...
private void PlayActionPerformed(java.awt.event.ActionEvent evt) {
this.setRunning(true);
System.out.println(getRunning());
}
}
当我点击“播放”按钮时,输出是: “真的 真的 真的”
这里我的问题出现了:为什么在输出的控制台中,如果我将该值从 false 更改为 true(通过按下按钮),以下行不会显示“为什么它不起作用”?如何在主函数中调用那个不断变化的变量?提前致谢。
【问题讨论】:
-
它将在设置可见框架后直接执行
if(),然后您才能执行任何导致将isRunning设置为true的操作。 -
为什么不:
setVisible只标记组件变为可见,主方法继续执行调用getRunning,此时它不是true- 还没有可见。在后台系统开始显示“菜单”,但主要方法可能长时间终止......即使菜单可见,您也没有时间按下任何按钮。您可以注册一个侦听器(检查`java.beans.PropertyChangeSupport`)以在值更改时调用......或者只使用模式对话框
标签: java swing parameter-passing actionlistener