我有2个组合框和一个微调器,它们的工作原理如下:如果第一个组合的选定项目发生了变化,则第二个组合会保留其所选项目,但会重新调用微调器(微调器仅链接到第二个框) )。我的问题是,当我这样做时,我无法触发微调器的stateChange监听器。
这是强制第二个盒子在第一个盒子改变时重新选择它的最后一个项目的代码(这里没什么不对,它工作得很好):
String orientare = (String) orientareComboBox.getSelectedItem();
orientareComboBox.setSelectedItem(orientare);
这是第二个框actionListener的代码:
public void actionPerformed(ActionEvent e) {
JComboBox combo = (JComboBox) e.getSource();
String value = combo.getSelectedItem().toString();
if (value.equalsIgnoreCase("oblica"))
{
unghiSpinner.setEnabled(true);
double unghi = (double) unghiSpinner.getValue();
unghiSpinner.setValue(new Double(unghi));
}
}
锭床工人的听众:
public void stateChanged(ChangeEvent e)
{
if (unghiSpinner.isEnabled())
{
// do something
}
}
我不知道我应该使用什么命令让unghiSpinner
触发其监听器,因为setValue()
无法执行此操作。
答案 0 :(得分:5)
我没有看到你在上面的代码中更改JSpinner的值。看来你所做的就是将微调器的值设置为它之前保持的相同值,并且不应该触发监听器。要触发更改侦听器,您必须更改被观察实体的状态。