2016-08-05 96 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。