gpt4 book ai didi

java - 如何从 javafx 中的切换按钮获取文本

转载 作者:行者123 更新时间:2023-11-30 10:07:44 25 4
gpt4 key购买 nike

我是 JavaFX 的新手。我正在从事电影预订项目。我试图在循环后从切换按钮中检索文本,但我没有看到 getText() 方法。有没有办法从切换按钮获取文本。

这是我的代码:

package theatre;

import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.ToggleButton;
import javafx.scene.layout.GridPane;

import java.net.URL;
import java.util.ResourceBundle;

public class TheatreController implements Initializable {

@FXML
private GridPane middleGridPane;

private final int MAX_ROW = 5;
private final int MAX_COL = 5;

@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
int countRow = 1;
ToggleButton[][] seats = new ToggleButton[MAX_ROW][MAX_COL];

char lastRow = 'A' + (MAX_ROW - 1);

for(char row = 'A'; row < lastRow; row++){
for (int col = 1; col < MAX_COL; col++){
seats[countRow][col] = new ToggleButton(String.format(row + "%02d", col));
seats[countRow][col].setPrefWidth(50);
middleGridPane.add(seats[countRow][col], countRow, col);
seats[countRow][col].setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
// Can't get text from here
event.getEventType().getName();
}
});

}
countRow++;
}
}

@FXML
public void bookSeat(){

}
}

最佳答案

您在 EventHandlerhandle() 中使用的任何变量都必须是 finaleffectively finel .

这是您问题的解决方案:

import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.ToggleButton;
import javafx.scene.layout.GridPane;
import java.net.URL;
import java.util.ResourceBundle;

public class TheatreController implements Initializable {

@FXML
private GridPane middleGridPane;

private final int MAX_ROW = 5;
private final int MAX_COL = 5;

@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
int countRow = 1;
ToggleButton[][] seats = new ToggleButton[MAX_ROW][MAX_COL];

char lastRow = 'A' + (MAX_ROW - 1);

for(char row = 'A'; row < lastRow; row++){
for (int col = 1; col < MAX_COL; col++){
seats[countRow][col] = new ToggleButton(String.format(row + "%02d", col));
seats[countRow][col].setPrefWidth(50);
middleGridPane.add(seats[countRow][col], countRow, col);

//effectively final variable to use in handle method of EventHandler
int finalCountRow = countRow;
int finalCol = col;

seats[countRow][col].setOnAction(new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {

//now you can get text from seats[finalCountRow][finalCol]
System.out.println(seats[finalCountRow][finalCol].getText());
event.getEventType().getName();
}
});
}
countRow++;
}
}

@FXML
public void bookSeat(){

}
}

关于java - 如何从 javafx 中的切换按钮获取文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54103126/

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