我希望使用名为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);
}
});
}
答案 0 :(得分:1)
您应该从微调器模型中检索值,而不是尝试保存事件。
Swing tutorial about spinners中对此进行了解释。来自该turial的代码的小型复制粘贴
public void stateChanged(ChangeEvent e) {
SpinnerModel dateModel = dateSpinner.getModel();
if (dateModel instanceof SpinnerDateModel) {
setSeasonalColor(((SpinnerDateModel)dateModel).getDate());
}
当然,您需要调整此代码以匹配您当前的设置(例如,将转换更改为SpinnerDataModel
到您的微调器模型)