2015-10-15 62 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控件的數量,併爲每個按鈕添加一個選擇監聽器。

當您單擊其中一個單選按鈕時,將爲不再選中的按鈕和已選中按鈕的另一個事件觸發選擇事件。所以你得到兩個事件 - 一個用於取消選擇和一個用於選擇。