在弹出窗口(Java)中显示用户输入



我的程序接收用户输入并打印出来。我所做的是,我从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);
}
}

您需要在Text对象上使用getText方法,而不是toString方法。

https://docs.oracle.com/javase/8/javafx/api/javafx/scene/text/Text.html#getText--

我认为您想将toString((更改为getText((:

代替

startInput.setText(startDate.getText());
String startDateInput = startInput.toString();
endInput.setText(endDate.getText());
String endDateInput = endDate.toString();

写入

startInput.setText(startDate.getText());
String startDateInput = startInput.getText();
endInput.setText(endDate.getText());
String endDateInput = endDate.getText();

最新更新