diff --git a/src/main/java/org/scijava/ui/swing/widget/SwingChoiceWidget.java b/src/main/java/org/scijava/ui/swing/widget/SwingChoiceWidget.java index 3adb50ae..7a04b849 100644 --- a/src/main/java/org/scijava/ui/swing/widget/SwingChoiceWidget.java +++ b/src/main/java/org/scijava/ui/swing/widget/SwingChoiceWidget.java @@ -31,6 +31,7 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.util.Arrays; import javax.swing.JComboBox; import javax.swing.JPanel; @@ -67,7 +68,10 @@ public void actionPerformed(final ActionEvent e) { @Override public String getValue() { - return comboBox.getSelectedItem().toString(); + if (comboBox.getItemCount() > 0) + return comboBox.getSelectedItem().toString(); + else + return null; } // -- WrapperPlugin methods -- @@ -97,8 +101,24 @@ public boolean supports(final WidgetModel model) { @Override public void doRefresh() { - final Object value = get().getValue(); - if (value.equals(comboBox.getSelectedItem())) return; // no change - comboBox.setSelectedItem(value); + final String[] choices = get().getChoices(); + + if (!Arrays.equals(choices, comboBoxItems())) { + comboBox.removeAllItems(); + for (int i=0; i