【发布时间】:2021-09-26 06:42:18
【问题描述】:
我的程序接受用户输入并将其打印出来。我所做的是从 textFields 中获取文本并将它们放入 toString() 方法,然后将它们打印到弹出框上。我的问题是弹出框上的输出不是我想要的。程序开始吐出放在文本字段中的原始字符串和紧随其后的一堆随机文本(如一堆文本及其位置的规范等)我不确定为什么会发生这种情况,常规字符串或文本工作正常,但为什么检索到的文本会出现这种奇怪的显示?
public class Main extends Application {
private TextField startDate;
private Text start;
private Text end;
private TextField endDate;
private Button count;
@Override
public void start(Stage primaryStage) {
start = new Text("Start Date: ");
end = new Text("End Date: ");
start.setFont(Font.font("Arial"));
end.setFont(Font.font("Arial"));
startDate = new TextField("1/1/2000");
endDate = new TextField("12/06/2020");
startDate.setFont(Font.font("Arial"));
endDate.setFont(Font.font("Arial"));
count = new Button("Count");
count.setFont(Font.font("Arial"));
ButtonEvent ButtonEvent = new ButtonEvent();
count.setOnAction(ButtonEvent);
HBox startLine = new HBox(10);
startLine.getChildren().addAll(start, startDate);
startLine.setAlignment(Pos.CENTER);
HBox endLine = new HBox(10);
endLine.getChildren().addAll(end, endDate);
endLine.setAlignment(Pos.CENTER);
HBox button = new HBox();
button.getChildren().add(count);
button.setAlignment(Pos.CENTER);
VBox vbox = new VBox(10);
vbox.getChildren().addAll(startLine, endLine, button);
vbox.setAlignment(Pos.CENTER);
Pane root = new Pane();
root.getChildren().addAll(vbox);
Scene scene = new Scene(root, 250, 130);
primaryStage.setTitle("Date Counter");
primaryStage.setScene(scene);
primaryStage.show();
}
private class ButtonEvent implements EventHandler<ActionEvent>{
private Text startInput;
private Text endInput;
@Override
public void handle(ActionEvent event) {
startInput = new Text();
endInput = new Text();
startInput.setText(startDate.getText());
String startDateInput = startInput.toString();
endInput.setText(endDate.getText());
String endDateInput = endDate.toString();
Text test1 = new Text(startDateInput);
test1.setFont(Font.font("Arial"));
Text test2 = new Text(endDateInput);
test2.setFont(Font.font("Arial"));
Stage msg = new Stage();
msg.initModality(Modality.APPLICATION_MODAL);
VBox dialogVbox = new VBox(20);
dialogVbox.getChildren().addAll(test1, test2);
Scene dialogScene = new Scene(dialogVbox, 300, 200);
msg.setScene(dialogScene);
msg.show();
}
}
public static void main(String[] args) {
Application.launch(args);
}
}
【问题讨论】:
-
你能把
endDate = new TextField("12/06/2020);改成endDate = new TextField("12/06/2020");吗? -
@ofek nice catch ;) 已修复
标签: java string input text event-handling