2012-04-29 39 views
1

我希望使用創建的名爲spinnerModel的值,但似乎無法這樣做,我相信我必須將其聲明爲某種類型,我不確定。我想把它變成一個雙倍的數據,因爲它稍後會在程序中使用。 我有以下的,因爲它主張,如何從更改監聽器保存jspinner的值

import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
import javax.swing.event.*; 

public class UI { 

//Need to use the spinnerModel here but cannot :(

private void weightSpinnerMetricStateChanged(ChangeEvent e) { 
    JSpinner weightSpinnerMetric = (JSpinner) e.getSource(); 
    SpinnerModel spinnerModel = weightSpinnerMetric.getModel(); 
    System.out.println(spinnerModel.getValue()); 
} 
    stonesSpinnerImperial = new JSpinner(); //Spinner created here. 

stonesSpinnerImperial.setModel(new SpinnerNumberModel(3, 3, 31, 1)); 
      stonesSpinnerImperial.addChangeListener(new ChangeListener() { 
       @Override 
       public void stateChanged(ChangeEvent e) { 
        stonesSpinnerStateChanged(e); 
        stonesSpinnerImperialStateChanged(e); 
       } 
      }); 
} 

回答

1

你應該檢索微調模型中的價值,而不是試圖挽救該事件。

這全部在Swing tutorial about spinners中解釋。從turial

public void stateChanged(ChangeEvent e) { 
     SpinnerModel dateModel = dateSpinner.getModel(); 
     if (dateModel instanceof SpinnerDateModel) { 
      setSeasonalColor(((SpinnerDateModel)dateModel).getDate()); 
} 

當然代碼的小複製粘貼,你將需要調整這個代碼以符合當前的設置(如投給SpinnerDataModel更改爲微調模型)

+0

我想知道的如果使用SpinnerNumberModel會更好嗎?如果是這樣,你將如何使用它,或者它與SpinnerDataModel相同? – Banned

+0

嘿羅賓,代碼已被編輯,請你幫忙:) – Banned

+0

究竟是什麼仍然是一個問題。在您自己設置模型時,您可以安全地將其轉換爲「SpinnerNumberModel」 – Robin