gpt4 book ai didi

java - 使用场景生成器在 JavaFX 中创建按钮数组

转载 作者:行者123 更新时间:2023-12-01 09:14:35 24 4
gpt4 key购买 nike

例如,我在 FXML 中有两个按钮:

<Button fx:id="button1" onAction="#onClick1" prefHeight="134.0" prefWidth="134.0"></Button>
<Button fx:id="button2" onAction="#onClick2" prefHeight="134.0" prefWidth="134.0"></Button>

我想将它作为 Controller 类中的按钮数组。我该如何去做呢?我尝试过:

public Button button1, button2;
public Button[] arrayButtons = {button1, button2}

还尝试了一种方法:

public class controller {
public Button button1, button2;
public Button[] arrayButtons;

public void initializeButtonArray() {
arrayButtons = new Button[2];
arrayButtons[1] = button1;
arrayButtons[2] = button2;
}
}

这些都不起作用,因为当我尝试对数组执行某些操作时(即 arrayButton[1].setText("Test")),它会给我一个运行时异常:

java.lang.RuntimeException: java.lang.reflect.InvocationTargetException

我怎样才能拥有一个 Button 数组,其中元素来自 fx:id?

最佳答案

你在这里:

1)使用@FXML注释是因为对象是私有(private)的。如果您将它们公开,则无需使用@FXML

2)一旦 FXMLLoader 加载了 Controller ,就会调用 initialize 方法。在该方法中,您可以确定与 fxml 场景图链接的每个对象都已初始化。

🏁代码(显然这是一种方法,您可以通过其他各种方式来实现):

public class controller { 


@FXML
private Button button1;

@FXML
private Button button2;

public Button[] arrayButtons;

@FXML
public void initialize(){

initializeButtonArray();

}
public void initializeButtonArray() {

arrayButtons = new Button[2];
arrayButtons[1] = button1;
arrayButtons[2] = button2;
}

}

关于java - 使用场景生成器在 JavaFX 中创建按钮数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40660902/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com