2014-11-17 39 views
0

我正嘗試用多個項目創建一個MenuButton。然後,當其中一個項目被點擊時,抓住它的價值。但無法弄清楚如何做到這一點?JavFX 2 MenuButton

這裏是我的FXML片段:

<MenuButton fx:id="changeStatusButton" layoutX="420.0" layoutY="16.0" mnemonicParsing="false" onAction="#changeStatusFired" prefHeight="26.0" prefWidth="180.0" text="Change My Status" AnchorPane.rightAnchor="17.0"> 
    <items> 
    <MenuItem mnemonicParsing="false" text="Set Available" /> 
    <MenuItem mnemonicParsing="false" text="Set Unavailable" /> 
    </items> 
</MenuButton> 

我會如何從選定項目抓的文本?所以如果第一個項目被選中,我想獲得文本「設置可用」來執行一個基於此的動作。但不知道該怎麼做?對於文本字段這很容易,但不知道這些MenuButton是如何工作的。我發現的所有信息僅告訴您如何填充它們,但我已經預先填充它們...

回答

1

Menu s和MenuButton s不保持「selectedItem」狀態。當用戶點擊它們(或通過鍵盤快捷鍵調用他們的動作)時,MenuItem的火災ActionEvent。所以,你需要註冊動作偵聽器爲他們:

<MenuButton fx:id="changeStatusButton" layoutX="420.0" layoutY="16.0" mnemonicParsing="false" prefHeight="26.0" prefWidth="180.0" text="Change My Status" AnchorPane.rightAnchor="17.0"> 
    <items> 
    <MenuItem mnemonicParsing="false" onAction="#setAvailable" text="Set Available" /> 
    <MenuItem mnemonicParsing="false" onAction="#setUnavailable" text="Set Unavailable" /> 
    </items> 
</MenuButton> 

,然後在你的控制器:

private boolean available ; 

// ... 

@FXML 
private void setAvailable(ActionEvent event) { 
    available = true ; 
} 

@FXML 
private void setUnavailable(ActionEvent event) { 
    available = false ; 
} 

如果你想真正的選擇功能,您應該考慮使用ComboBox。顯然在這個例子中,CheckBox將是最好的選擇,但我認爲你的真實例子有更多的選擇。

+0

非常好,謝謝!知道它必須是這樣簡單的東西,只是無法弄清楚。 – shparkison

相關問題