2016-08-05 209 views
0

所以我試圖做一種命運之輪遊戲或Hang子手。我有33個代表字母的按鈕,1個按鈕= 1個字母。當用戶按下一個時,它必須「消失」(變爲禁用和不可見)。我在SceneBuilder中創建了所有按鈕,使它們位於FXML文件中。按下按鈕'消失'

我該怎麼做呢?我爲第一個按鈕創建了這個方法。但它不能正常工作,無論我按下第一個按鈕的按鈕是否消失。有沒有更簡單的方法來做到這一點,而不是每個按鈕寫33種不同的方法?

public void letterChosen (ActionEvent evt) { 
    b1.setDisable(true); 
    b1.setVisible(false); 
+0

而不是b1,嘗試ActionEvent對象的getSource方法。這將返回事件的來源,這將有望成爲你正在尋找的按鈕 – VortixDev

+0

非常感謝你,它現在的作品! – Felix

回答

2

單擊的Button可作爲ActionEventsource

此外userData可以連接到Button,如果你不能得到必要的信息,以處理來自Button的其他屬性按鈕點擊:

public void letterChosen(ActionEvent event) { 
    Button source = (Button) event.getSource(); 
    source.setVisible(false); 
    System.out.println("pick: "+source.getUserData()); 
} 

FXML

<Button onAction="#letterChosen" userData="a" text="A"/> 
<Button onAction="#letterChosen" userData="b" text="B"/> 

注意沒有必要禁用未顯示的Node,因爲不可見的Node無法與之交互。禁用的Button默認情況下會顯示爲「淡色」,但也可以以不同的方式顯示,例如,使用CSS。