我遇到的问题是将SPinnerModel类型更改为double,因为稍后将在程序中使用它。另外我不能在其方法之外使用weightSpinnerMetric,但我不确定如何修复它。
再次感谢你们。
import javax.swing.*;
import javax.swing.event.*;
public class UI {
private JSpinner weightSpinnerMetric;
//Need to change the weightSpinnerMetric to double and then use it here but cannot do either
private void weightSpinnerMetricStateChanged(ChangeEvent e) {
JSpinner weightSpinnerMetric = (JSpinner) e.getSource();
SpinnerModel spinnerModel = weightSpinnerMetric.getModel();
System.out.println(spinnerModel.getValue());
weightSpinnerMetric = new JSpinner(); //Spinner created here.
weightSpinnerMetric.setModel(new SpinnerNumberModel(3, 3, 31, 1));
weightSpinnerMetric.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
weightSpinnerMetricStateChanged(e);
weightSpinnerMetricStateChanged(e);
}
});
}}
就目前而言,我希望在另一个方法(A按钮)中调用spinnermodel,以便在按下按钮时调用spinnermodel值,对于一个可视示例,我有以下内容:
答案 0 :(得分:3)
如果另一个方法在同一个类UI中,只需调用它? 如:
weightSpinnerMetric.getModel().getValue();
如果你需要它与(double)
进行双重演绎。
如果方法在另一个类中,则应在UI中提供类似于此的非私有方法:
public double getCurrentWeight() {
return (double) weightSpinnerMetric.getModel().getVale();
}
另一种方法是让一个变量保持当前的输入权重,并在weightSpinnerMetricStateChanged
中更新它,而不是System.out.println(spinnerModel.getValue())
将该值设置为该变量。