我想在我的GUI上构建一个包含aprox 12个单独按钮的窗格,每个按钮都有不同的名称,文本和ActionEvent反应。这是每个按钮的模式:
Button compB = new Button();
compB.setText("BtnText");
compB.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
System.out.println("ADD_INPUT_LINK");
}
});
我想知道是否有一种方法可以使用流(或多个流),以便为每个按钮分配不同的名称,文本和ActionEvent。 也许有3个不同的流,其元素具有可识别的int,我可以用它来绑定?
非常感谢任何帮助。
答案 0 :(得分:1)
除非您正在从文件或其他来源读取这些流,并且可以在循环中使用init按钮,否则您将无法使用它们。
如果您只想使用更短的代码,可以使用工厂方法。像这样:
public class Buttons extends Application {
@Override
public void start(Stage primaryStage) {
VBox root = new VBox();
Scene scene = new Scene(root, 300, 250);
doButton(root, "hi", ()->{System.out.println("hi");});
doButton(root, "hoi", ()->{System.out.println("1");});
doButton(root, "hei", ()->{System.out.println("2");});
doButton(root, "hai", ()->{System.out.println("3");});
doButton(root, "hio", ()->{System.out.println("4");});
primaryStage.setTitle("Hello World!");
primaryStage.setScene(scene);
primaryStage.show();
}
public static Button doButton(Pane owner, String name, final Runnable handler) {
Button compB = new Button();
compB.setText(name);
compB.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
handler.run();
}
});
owner.getChildren().add(compB);
return compB;
}
}