我已经编写了这段代码,但由于某种原因,该代码无法按预期工作。看起来它应该有效,但它有点让我认为“isBasic” boolean 值并没有真正改变,并且总是导致错误。谁能告诉我出了什么问题吗?
@Override
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("basic")){
isBasic = true;
}
if (isBasic && e.getActionCommand().equals("basic")){
isBasic = false;
}
if (isBasic){
System.out.println("It works!!");
}
}
这是 JButton 的代码:
JButton basicTower = new JButton("Basic Tower");
JButton test = new JButton("Test");
public boolean isBasic = false;
public TurretPanel(JPanel panel,BorderLayout layout){
setLayout(layout);
panel.add(basicTower,BorderLayout.WEST);
add(panel);
basicTower.setActionCommand("basic");
basicTower.addActionListener(this);
}
最佳答案
这两个 if 语句相互否定:
if (e.getActionCommand().equals("basic")){
isBasic = true;
}
if (isBasic && e.getActionCommand().equals("basic")){
isBasic = false;
}
当命令等于“basic”时,两者都会执行,第一个将其设置为 true,第二个将其恢复为 false。使用 if/else:
if (e.getActionCommand().equals("basic"))
{
isBasic = !isBasic;
}
关于Java boolean 值和 JButton,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16908263/