2011-11-29 67 views
3

下面的代码适用于当用户分配我分配的统计点总数时。但是,我只想禁用加号按钮,所以他们可以降低一个统计值,然后再次添加。禁用int微调器加(仅)按钮

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

对于任何人谁在这里发现这个线程是我如何解决我的问题:

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尖端。

3

用所需的最小值和最大值创建您的JSpinner SpinnerNumberModel

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

+0

模型都有一个允许所有10个“未使用”点的最大值,因为这是统计分配应该如何工作的。你可以将所有的属性点分配给一个属性或者分配。 strengthModel = new SpinnerNumberModel(10,10,20,1); – KisnardOnline

+0

对不起,我没有仔细阅读这个问题。编辑我的答案,包括一些应该帮助你的建议。 – ziesemer

+0

我很抱歉,甚至问,但有没有什么办法可以扩大如何实现?我承认,我不是最好的编码员。 – KisnardOnline