我的問題很簡單,不幸的是我找不到答案。 基本上,我有一個Swing窗口,有2個JSpinner
s。第二個JSpinner
必須定義第一個JSpinner
的上限。例如,如果用戶在第二個JSpinner
上放置值4,則它們不能在第一個JSpinner
中放置高於4的值。如果當前顯示在第一JSpinner
值高於4我將它設置爲4獲取微調器的當前範圍?
所以我已經建立了我的兩個JSpinner
s的SpinnerNumberModel
在構造函數中設置初始範圍:
// First spinner
SpinnerNumberModel spinnerLimits_sante = new SpinnerNumberModel(3, 0.25, 3, 0.25);
JSpinner spin_sante = new JSpinner(spinnerLimits_sante);
// Second spinner
JSpinner spin_sante_max = new JSpinner(spinnerLimits_sante_max);
SpinnerNumberModel spinnerLimits_sante_max = new SpinnerNumberModel(3, 3, 32767, 1);
爲了得到第二個JSpinner
當它改變時的價值,我想過使用它上面的ChangeListener
。所以每當它發生變化時,我都可以獲得新值,使用新邊界重新創建一個對象(低邊界和間隔不會改變,但是高邊界將被更新,並且如果它的值將被更新高於上限)。
ChangeListener listenerSanteMax = new ChangeListener() {
public void stateChanged(ChangeEvent e) {
int newBound = spin_sante_max.getValue();
// ...
}
};
spin_sante_max.addChangeListener(listenerSanteMax);
遺憾的是這就是我堅持:JSpinner
沒有消氣,將返回一個SpinnerNumberModel
對象,也沒有自己的價值觀。 即使有一個,似乎也沒有setter。
所以,我的問題: 是否有可能動態更改微調器的範圍和值?
在此先感謝!
從Spinner獲取模型(測試它是否是'instanceof' SpinnerNumberModel')並使用它。 *「所以,我的問題:是否有可能動態地改變微調器的範圍和價值?「* - 我還沒有嘗試過,但是一旦擁有了'SpinnerNumberModel',就可以改變它的屬性 – MadProgrammer
您是否熟悉類型轉換? –