我试图制作一个java游戏,当玩家的生命值达到0时,游戏应该结束但是目前当我的进度条达到0时,没有任何事情发生在这里我的代码是否有问题?
JProgressBar healthProgressBar = new JProgressBar();
lblHealth.setLabelFor(healthProgressBar);
healthProgressBar.setStringPainted(true);
healthProgressBar.setValue(100);
healthProgressBar.setMinimum(0);
healthProgressBar.setBounds(318, 103, 166, 20);
mainGame.add(healthProgressBar);
if(healthProgressBar.getValue() <= healthProgressBar.getMinimum())
{
frame5.setVisible(false);
frame7.setVisible(true);
}
答案 0 :(得分:3)
您正在调用此代码,
if(healthProgressBar.getValue() <= healthProgressBar.getMinimum())
在您创建JProgressBar的同一区域和不,其中JProgressBar的状态正在被更改,因此if块测试将永远不会成立。解决方法是在测试JProgressBar被更改的位置调用此方法。但也要重新考虑你交换JFrames的愿望。相反,如果您重新设置单个游戏JFrame,用户会好得多。
答案 1 :(得分:3)
您实际上是在将值设置为100后立即检查它,因此它始终返回false
。
相反,您可以使用侦听器,例如:
healthProgressBar.addChangeListener(e -> {
if (healthProgressBar.getValue() <= healthProgressBar.getMinimum()) {
frame5.setVisible(false);
frame7.setVisible(true);
}
});
其他方式是将您设置值的帧更改为healthProgressBar
。
答案 2 :(得分:0)
当值仍然为0时,您只检查一次值