我正在尝试制作一个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);
    }

最佳答案

您实际上是在将值设置为100后立即检查它,因此它始终返回false

相反,您可以使用一个侦听器,例如:

healthProgressBar.addChangeListener(e -> {
    if (healthProgressBar.getValue() <= healthProgressBar.getMinimum()) {
        frame5.setVisible(false);
        frame7.setVisible(true);
    }
});

另一种方法是更改​​将值设置为healthProgressBar的帧。

09-04 06:31