[英]Java FX “mass” handling Buttons
我已经使用SceneBuilder在Java FX中启动了一个TicTacToe项目。 FXML仅包含在GridPane
内部的3x3按钮网格中。
我想做的是制作一个“通用”方法,以便在按下一个按钮时,如果尚未将其分配给任何一个,则将其文本更改为“ O”或“ X”。
像这样
private void onButtonClick(){
if (btn00.getText() == null)
btn00.setText("X or O");
}
其中btn00
不是按钮的特定名称,而是所选的按钮,因为someTableView.getSelectionModel()
...适用于TableView
。
假设所有这些按钮都将onButtonClick
方法注册为onAction
事件处理程序,则可以添加ActionEvent
参数并从source
属性中检索Button
。
private void onButtonClick(ActionEvent event) {
Button button = (Button) event.getSource();
if (button.getText() == null || button.getText().isEmpty()) {
button.setText("X or O");
}
}
除了使用event.getSource()
的解决方案之外,您还可以创建一个将处理程序附加到按钮的方法:
private Button[][] buttons = new Button[3][3] ;
private String currentTurn = "O" ;
// ...
for (int x = 0 ; x < 3 ; x++) {
for (int y = 0 ; y < 3 ; y++) {
buttons[x][y]=new Button();
attachHandler(buttons[x][y]);
}
}
// ...
private void attachHandler(Button button) {
button.setOnAction(event -> {
if (button.getText()==null || button.getText().isEmpty()) {
button.setText(currentTurn);
}
});
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.