2015-10-15 61 views
1

以下是我用来创建自定义首选项页面的类。Eclipse首选项 - 单选按钮中的多个监听器

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” 我看到选择1。 当我按下“选择2”日志我看到choice1和choice2。 当我在日志中再次按下“Choice 1”时,我看到了choice2和choice1。

看来,单选按钮有一个多事件监听器。为什么event.getNewValue()调用两次?

回答

0

RadioGroupFieldEditor用无线电风格创建一个Button控件的数量,并为每个按钮添加一个选择监听器。

当您单击其中一个单选按钮时,将为不再选中的按钮和已选中按钮的另一个事件触发选择事件。所以你得到两个事件 - 一个用于取消选择和一个用于选择。