按下时制作一个按钮 'disappear'
Making a button 'disappear' when pressed
所以我正在尝试制作一种命运之轮游戏或刽子手游戏。我有 33 个代表字母表的按钮,1 个按钮 = 1 个字母。当用户按下一个时,它必须 'dissapear'(变为禁用和不可见)。我在 SceneBuilder 中创建了所有按钮,因此它们位于 FXML 文件中。
我该怎么做?我为第一个按钮创建了这个方法。但它不能正常工作,无论我按什么按钮第一个消失。如果不为每个按钮编写 33 种不同的方法,有没有更简单的方法呢?
public void letterChosen (ActionEvent evt) {
b1.setDisable(true);
b1.setVisible(false);
被点击的Button
作为ActionEvent
的source
可用。
另外 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
将显示 "faded",但也可以以不同的方式显示,例如使用 CSS.
所以我正在尝试制作一种命运之轮游戏或刽子手游戏。我有 33 个代表字母表的按钮,1 个按钮 = 1 个字母。当用户按下一个时,它必须 'dissapear'(变为禁用和不可见)。我在 SceneBuilder 中创建了所有按钮,因此它们位于 FXML 文件中。
我该怎么做?我为第一个按钮创建了这个方法。但它不能正常工作,无论我按什么按钮第一个消失。如果不为每个按钮编写 33 种不同的方法,有没有更简单的方法呢?
public void letterChosen (ActionEvent evt) {
b1.setDisable(true);
b1.setVisible(false);
被点击的Button
作为ActionEvent
的source
可用。
另外 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
将显示 "faded",但也可以以不同的方式显示,例如使用 CSS.