我正在尝试在我的表单中创建一个工具栏,其中包含一些JSpinner
,可以更改矩形的宽度和高度。
在此工具栏中,我有另一个JSpinner
,其最大值基于宽度和高度JSpinners
的当前值。
我尝试修改SpinnerNumberModel
事件中JSpinner
的{{1}},但此解决方案不起作用。
有人知道怎么做吗?
创建宽度和高度stateChanged()
:
JSpinners
根据先例的值创建其他 //Creo il modello per i JSpinners
widthModel = new SpinnerNumberModel((double)STD_DIMENSION, 1, 999, 1);
heightModel = new SpinnerNumberModel((double)STD_DIMENSION, 1, 999, 1);
//Creo pannello per widthSpinner
widthSpinner = new JSpinner(widthModel);
widthSpinner.addChangeListener(this);
widthPanel = new JPanel();
widthPanel.setLayout(new FlowLayout());
widthPanel.add(new JLabel("Larghezza: "));
widthPanel.add(widthSpinner);
//Creo pannello per heightSpinner
heightSpinner = new JSpinner(heightModel);
heightSpinner.addChangeListener(this);
heightPanel = new JPanel();
heightPanel.setLayout(new FlowLayout());
heightPanel.add(new JLabel("Altezza: "));
heightPanel.add(heightSpinner);
:
JSpinner
//Creo lightModel e sunSpinner
lightModel = new SpinnerNumberModel(canvas.getLightMax()/2, 0, canvas.getLightMax(), 1);
sunSpinner = new JSpinner(lightModel);
sunSpinner.setEnabled(false);
sunSpinner.addChangeListener(this);
事件:
stateChanged()
@Override
public void stateChanged(ChangeEvent e) {
if (e.getSource().equals(widthSpinner)) {
canvas.setRealWidth((double)widthSpinner.getValue());
lightModel = new SpinnerNumberModel(canvas.getLightMax()/2, 0, canvas.getLightMax(), 1);
sunSpinner.setModel(lightModel);
}
if (e.getSource().equals(heightSpinner)) {
canvas.setRealHeight((double)heightSpinner.getValue());
lightModel = new SpinnerNumberModel(canvas.getLightMax()/2, 0, canvas.getLightMax(), 1);
sunSpinner.setModel(lightModel);
}
}
是一种根据某些getLightMax()
的激活返回维度的方法:
JRadioButtons
我希望我发布所有必要的代码,如果不是只是问。
解决:
我忘了初始化 public double getLightMax() {
if (horizontalBool) {
return realHeight;
} else {
return realWidth;
}
}
变量,当您按下其中一个horizontalBool
时,我也没有在actionPerformed()
事件中调用模型更改。
感谢所有人。