如果你已经在你的控制器设置所有的按钮,你可以这样做:
//I supposed you named you 'button_a' your
@FXML
Button button_a;
@Override
public void initialize(URL location, ResourceBundle resources) {
button_a.setOnAction(event->{
BufferedWriter writer = null;
try {
writer = new BufferedWriter(new FileWriter("file.txt")); //or new File("c:/users/.../.../file.txt");
writer.write(button_a.getText()); //will give the letter you write on the button : the letter of the keyboard
} catch (IOException e) {
System.err.println("IOError on write");
e.printStackTrace();
} finally {
if (writer != null) {
try {
writer.close();
} catch (IOException e) {
System.err.println("IOError on close");
e.printStackTrace();
}
}
}
});
}
一个简单的方法可能是:你一定把所有的按钮在一个容器中,一个GridPane会很好,因为你可以把所有的东西放到一个容器中(并且只放置按钮,或者你需要在循环中每次检查它是一个按钮),然后遍历GridPane的子节点(按钮):
@FXML
GridPane grid;
@Override
public void initialize(URL location, ResourceBundle resources) {
String fileName = "test.txt";
for(Node button : grid.getChildren()){
((Button)button).setOnAction(event->{
BufferedWriter writer = null;
try {
writer = new BufferedWriter(new FileWriter(fileName)); //or new File("c:/users/.../.../file.txt");
writer.write(((Button)button).getText()); //will give the letter you write on the button : the letter of the keyboard
} catch (IOException e) {
System.err.println("IOError on write");
e.printStackTrace();
} finally {
if (writer != null) {
try {
writer.close();
} catch (IOException e) {
System.err.println("IOError on close");
e.printStackTrace();
}
}
}
});
}
}
希望这会有帮助