2015-10-15 3 views
1

Вот класс, который я использую для создания моей страницы настроек.Eclipse preference - Несколько прослушивателей в переключателях

public class CustomPref extends FieldEditorPreferencePage implements IWorkbenchPreferencePage { 

public CustomPref(){ 
    super(GRID); 
} 

@Override 
protected void createFieldEditors() { 
    addField(new RadioGroupFieldEditor("CHOICE", 
      "An example of a multiple-choice preference", 1, 
      new String[][] { { "&Choice 1", "choice1" },{ "&Choice 2", "choice2" } 
       }, getFieldEditorParent())); 


} 

@Override 
public void init(IWorkbench workbench) { 

} 


@Override 
public void propertyChange(PropertyChangeEvent event) { 
    super.propertyChange(event); 
    System.out.println(event.getNewValue()); 

} 

}

Но когда я нажал "Выбор 1" в журнале я вижу CHOICE1. , когда я нажал «Выбор 2» в журнале, я вижу выбор1 и выбор2. , когда я снова нажал «Выбор 1» в журнале, я вижу выбор2 и выбор1.

Кажется, что кнопка радио имеет несколько прослушивателей событий. Почему event.getNewValue() вызывается дважды?

ответ

0

RadioGroupFieldEditor создает несколько элементов управления Button с использованием стиля радио и добавляет прослушиватель выбора к каждой из кнопок.

Когда вы нажимаете на одну из переключателей, вы выбираете событие выбора для кнопки, которая больше не выбрана, а другое событие для выбранной кнопки. Таким образом, вы получаете два события: одно для выбора и одно для выбора.

Смежные вопросы