我正在使用以下代码生成Buttons
:
public static void addSitesButton() {
Button buttons[] = new Button[CsvScanner.numberOfLines + 1];
for (int i = 0; i < CsvScanner.numberOfLines && i< 19; i++) {
buttons[i] = new Button();
addPages(i, buttons[i]);
}
}
addPages()
方法
button.setOnAction(e -> {
button.setTextFill(Color.CRIMSON);
buttonClicked = (((Button) e.getSource()).getText());
});
我只得到我创建的按钮的编号。
使用该代码生成所需的Scene
和Grid
。
public static void createGrids() {
GridPane gridArray[] = new GridPane[buttonCounter];
Scene sceneArray[] = new Scene[buttonCounter];
for (int i = 0; i < buttonCounter; i++) {
gridArray[i] = new GridPane();
sceneArray[i] = new Scene(gridArray[i]);
}
}
我需要使用创建的Scene
更改Buttons
。
例如:First Button必须更改为数组中的第一个Scene。
我根本不知道如何做到这一点。
答案 0 :(得分:0)
如果buttonClicked给出一个int值,你可以这样做。
button.setOnAction(e -> {
button.setTextFill(Color.CRIMSON);
int buttonClicked = Integer.parse((((Button) e.getSource()).getText()));
stage.setScene(sceneArray[buttonClicked]);
});
答案 1 :(得分:0)
如果您的按钮文本不包含int值,则可以将其数组索引记录为AccessibleText
for (int i = 0; i < CsvScanner.numberOfLines && i< 19; i++) {
buttons[i] = new Button();
buttons[i].setAccessibleText(i+"");
addPages(i, buttons[i]);
}
然后
button.setOnAction(e -> {
button.setTextFill(Color.CRIMSON);
int buttonClicked = Integer.parse((((Button) e.getSource()).getAccessibleText()));
stage.setScene(sceneArray[buttonClicked]);
});
答案 2 :(得分:0)
创建按钮时,您可以在userData
中记录与按钮相关的值,并在您引用按钮时访问该保存的值。
例如,在创建按钮时记录用户数据:
buttons[i] = new Button();
buttons[i].setUserData(i);
然后,当您需要访问它时,检索您已保存的用户数据:
button.setOnAction(e -> {
int buttonIndex = (int) button.getUserData();
// do whatever you need to with button index...
});
如果您需要将多个数据与给定节点相关联,那么您可以使用node.getProperties()
API,但是,对于您的问题,可能只需要使用节点userData
属性
我需要使用创建的按钮更改场景。例如:First Button必须更改为数组中的第一个Scene。我根本不知道如何做到这一点。
假设您已经为按钮初始化了场景数组和用户数据,那么您应该能够:
button.setOnAction(e -> {
int index = (int) button.getUserData();
stage.setScene(sceneArray[index]);
});