1

spinnerModelと呼ばれる作成された値を使用したいのですが、使用できないようです。特定のタイプとして宣言する必要があると思いますが、よくわかりません。プログラムの後半で使用するので、ダブルにしたいです。現状では以下がありますが、

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);
                }
            });
}
4

1 に答える 1

1

イベントを保存しようとせずに、スピナーモデルから値を取得する必要があります。

これはすべて、スピナーに関するSwingチュートリアルで説明されています。そのturialからのコードの小さなコピーペースト

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

もちろん、現在の設定に一致するようにこのコードを調整する必要があります(たとえば、キャストをSpinnerDataModelスピナーモデルに変更します)

于 2012-04-29T22:41:26.587 に答える