好吧,这可能很简单,但我就是不明白。
package foo.foo.foo;
public class Vars {
public static boolean foo = false;
}
好的,这就是我的 Vars 课程。
然后我有一个 JFrame,有一个 JMenuBar、JMenu 和一个 JMenuItems。
items = new JCheckBoxMenuItem("Foo");
items.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
AbstractButton ab = (AbstractButton)e.getSource();
Vars.foo = ab.getModel().isSelected();
System.out.println(Vars.foo);
}
});
menu.add(items, 0);
menuBar.add(menu,0);
一切都很好,它为 println 返回 true。现在,这是实际的问题部分......我有一个 if 语句
if(Vars.foo)
这 - 应该 - 工作,对吗?它从不执行 if 括号内的代码,除非我在它上面添加这行代码。
System.out.println(Vars.foo);
这自然打印为 true,然后 if 语句有效,但如果我注释掉该行,它就不起作用。
我也一直在谷歌搜索,并尝试了这个:
Vars v = null;
if(v.yoo)
除非我有 println,否则仍然不会这样做,我不知道为什么 println 使它工作。你能解释一下为什么/如何工作吗?
编辑:
public class painthandling implements Runnable {
@Override
public void run() {
Vars y = null;
while(true){
if(y.foo){
//some code here
}
System.out.println(y.foo);
}
}
}
那是不工作的部分,if 语句。总是返回假。
frame f = new frame();
(new Thread(new painthandling())).start();
System.out.print("Got it.");
JFrame 部分在新框架中被调用,然后另一个类在那里被调用,Vars 类在两者中被调用。在painthandling() 中,如果if 语句没有println,则返回false。