当进度条达到 0 时打开新的 JFrame?
Open new JFrame when progress bar reaches 0?
我正在尝试制作一个 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);
}
您正在调用此代码,
if(healthProgressBar.getValue() <= healthProgressBar.getMinimum())
在您创建 JProgressBar 的同一区域,不在 JProgressBar 的状态正在更改的区域,因此 if 块测试永远不会为真是有道理的。一种解决方案是在测试 JProgressBar 更改的位置时调用它。但也要重新考虑您交换 JFrames 的愿望。相反,如果您重新设置单个游戏 JFrame,用户会好得多。
您只检查一次该值,当时它仍然是 0
你实际上是在将值设置为 100 后立即检查它,所以它总是 returns false
。
相反,您可以使用侦听器,例如:
healthProgressBar.addChangeListener(e -> {
if (healthProgressBar.getValue() <= healthProgressBar.getMinimum()) {
frame5.setVisible(false);
frame7.setVisible(true);
}
});
其他方法是更改您将值设置为 healthProgressBar
的帧。
我正在尝试制作一个 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);
}
您正在调用此代码,
if(healthProgressBar.getValue() <= healthProgressBar.getMinimum())
在您创建 JProgressBar 的同一区域,不在 JProgressBar 的状态正在更改的区域,因此 if 块测试永远不会为真是有道理的。一种解决方案是在测试 JProgressBar 更改的位置时调用它。但也要重新考虑您交换 JFrames 的愿望。相反,如果您重新设置单个游戏 JFrame,用户会好得多。
您只检查一次该值,当时它仍然是 0
你实际上是在将值设置为 100 后立即检查它,所以它总是 returns false
。
相反,您可以使用侦听器,例如:
healthProgressBar.addChangeListener(e -> {
if (healthProgressBar.getValue() <= healthProgressBar.getMinimum()) {
frame5.setVisible(false);
frame7.setVisible(true);
}
});
其他方法是更改您将值设置为 healthProgressBar
的帧。