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スピナーで可能ですか?ドキュメントには表示されませんでした。

編集少し詳しい情報:統計ポイントを分散させたり、すべてを1つの統計に割り当てたりすることができます。各モデルの最大値は、未使用の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));
    }
}

setMaximiumのヒントを提供してくれた「ziesemer」に感謝します。

于 2011-11-29T16:04:48.167 に答える
3

必要な最小値と最大値を持つSpinnerNumberModelを使用してJSpinnerを作成します。

各モデルに変更リスナーを追加します。たとえば、各スピナーが変更されると、すべてのスピナーの合計が計算され、各スピナーの最大値が現在の値に設定され、必要に応じてプラスボタンが無効になります。

于 2011-11-29T04:49:40.860 に答える