JSpinner
最小値セットと最大値セット用の2つがあります。
min に何らかの値が設定されている場合、ユーザーはJSpinner
最大テキストフィールドの最小テキストフィールド値未満を入力できず、その逆も同様です。
keylistner と別のトリックを使用して検証するにはどうすればよいですか?
カスタムスピナーモデルを設定できます。数字を試す
new JSpinner(new SpinnerNumberModel(initvalue,minvalue,maxvalue));
http://docs.oracle.com/javase/tutorial/uiswing/components/spinner.html
SpinnerNumberModel
最小値と最大値を設定する場所を使用できます
ChangeListener
各スピナー(モデル)にを取り付ける必要があります。
イベントが発生したらstateChanged
、イベントが発生したモデルを特定し、それに応じて他のモデルを更新する必要があります。
したがって、イベントが最小モデルから発生した場合は、最大モデルの最小値を更新する必要があります。
これにより一連のカスケード更新が発生する可能性があるため、そのための準備が必要であることに注意してください
MadProgrammerが示唆したChangeListener
ように、正しいアプローチです。
簡単なコード サンプルを次に示します。
//class fields
JSpinner lowSpin = new JSpinner(new SpinnerNumberModel());
JSpinner highSpin = new JSpinner(new SpinnerNumberModel());
ChangeListener spinListener = new ChangeListener() {
public void stateChanged(ChangeEvent e) {
int low = (int) lowSpin.getValue();
int high = (int) highSpin.getValue();
if(high < low)
JOptionPane.showMessageDialog(null, "HIGH should not be less than LOW."); //you can change 'null' to the name of your JFrame
}
};
lowSpin.addChangeListener(spinListener);
highSpin.addChangeListener(spinListener);