2

我有 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()我做不到。

4

1 回答 1

5

我没有看到您在上面的代码中更改了 JSpinner 的值。看来您所做的只是将微调器的值设置为与之前保持的值相同的值,并且不应触发侦听器。要触发更改侦听器,您必须更改被观察实体的状态。

于 2012-06-30T12:01:10.747 回答