3

当用户分配我分配的统计点总数时,下面的代码非常有用。但是,我只想禁用加号按钮,这样他们就可以降低统计值,然后再次添加。

if ((strengthModel.getNumber().intValue()) + (constitutionModel.getNumber().intValue()) + (dexterityModel.getNumber().intValue()) + (intelligenceModel.getNumber().intValue()) > 49){
     strengthSpinner.setEnabled(false);
     constitutionSpinner.setEnabled(false);
     dexteritySpinner.setEnabled(false);
     intelligenceSpinner.setEnabled(false);
}

使用 int 微调器可以做到这一点吗?我在文档中没有看到它。

编辑更多信息:您可以将您的统计点分散或将它们全部分配给一个统计数据。每个模型的最大值都是 10 个未使用的点。

4

2 回答 2

4

对于在这里找到此线程的任何人,我都是如何解决我的问题的:

public void stateChanged(ChangeEvent e) {
    Component[] components = characterCreationPanel.getComponents();
    Component component = null; 
    strengthValue = strengthModel.getNumber().intValue();
    constitutionValue = constitutionModel.getNumber().intValue();
    dexterityValue = dexterityModel.getNumber().intValue();
    intelligenceValue = intelligenceModel.getNumber().intValue();
    for (int i = 0; i < components.length; i++)
    {
        component = components[i];
        if (component instanceof JLabel){
            if (((JLabel) component).getText().substring(0, 5).equals("Stat ")){
                ((JLabel) component).setText("Stat Points Left: " + Integer.toString(50 - (strengthValue + constitutionValue + dexterityValue + intelligenceValue)));
                if ((strengthValue + constitutionValue + dexterityValue + intelligenceValue) == 50){
                    System.out.println("Hit your cap.");
                }
            }       
        }
        strengthModel.setMaximum(50 - (constitutionValue + dexterityValue + intelligenceValue));
        constitutionModel.setMaximum(50 - (strengthValue + dexterityValue + intelligenceValue));
        dexterityModel.setMaximum(50 - (strengthValue + constitutionValue + intelligenceValue));
        intelligenceModel.setMaximum(50 - (strengthValue + constitutionValue + dexterityValue));
    }
}

感谢“ziesemer”提供 setMaximium 的提示。

于 2011-11-29T16:04:48.167 回答
3

使用具有所需最小值和最大值的SpinnerNumberModel创建您的 JSpinner 。

为每个模型添加一个更改侦听器,以便在更改每个微调器时,计算所有微调器的总和,然后将每个微调器的最大值设置为其当前值,以在必要时禁用加号按钮。

于 2011-11-29T04:49:40.860 回答