从 textField 获取输入并在 textArea 中显示
Posted
技术标签:
【中文标题】从 textField 获取输入并在 textArea 中显示【英文标题】:Taking input from textField and displaying it in textArea 【发布时间】:2017-12-01 02:08:16 【问题描述】:我无法让我的程序从 textField 获取用户输入并将其显示在 textArea 中。我正在制作的程序是一个堆栈/队列程序。它有一个文本字段,用户可以在其中输入一个数字。然后是一个按钮,它接受输入并将其作为堆栈(FILO)显示在 textArea 中。
编辑 1: 我现在可以将用户输入移动到 textArea 中,但是,每当我添加第二个输入时,它只会用新输入替换旧输入,而不是显示列表。我应该使用 toString 方法来显示整个列表?如果需要的话,我需要把 toString 方法放在哪里?
TLDR,如何从 textField 获取输入并将其显示在 textArea 中?
这是我的主要课程。
TextField text = new TextField();
TextArea textArea = new TextArea("Text Area");
public class StackQueue extends Application
@Override
public void start(Stage stage) throws Exception
Stack myStack = new Stack();
Button btAdd = new Button("Add");
Button btDel = new Button("Delete");
Button btClear = new Button("Clear");
BorderPane bpane = new BorderPane();
text.setPrefWidth(50);
text.setAlignment(Pos.CENTER_LEFT);
text.setText("Label");
text.clear();
textArea.setPrefColumnCount(1);
textArea.setPrefRowCount(10);
textArea.clear();
HBox hBox = new HBox();
hBox.getChildren().addAll(btAdd, btDel, btClear);
bpane.setTop(hBox);
bpane.setCenter(text);
bpane.setBottom(textArea);
Scene scene = new Scene(bpane, 500, 250);
stage.setTitle("Stack Example");
stage.setScene(scene);
stage.show();
EventHandler<ActionEvent> addEvent = event -> add();
EventHandler<ActionEvent> delEvent = event -> del();
btAdd.setOnAction(addEvent);
btDel.setOnAction(delEvent);
public void add()
textArea.setText(text.getText(x));
public void del()
public static void main(String[] args)
launch(args);
这是 Stack 类。
public class Stack<E>
public String status = "String";
public ArrayList<E> arrayList;
public Stack()
arrayList = new ArrayList(10);
public void add(String x)
arrayList.add(0, (E) x);
//public String del
public void Clear()
【问题讨论】:
你遇到了什么麻烦? 我正在尝试让用户输入显示在 textArea 中。 textArea 是一个数组列表。 欢迎来到 Stack Overflow!请拿起tour,环顾四周,并通读help center,尤其是How do I ask a good question? 和What topics can I ask about here?。从第二个链接:“请求家庭作业帮助的问题必须包括您迄今为止为解决问题所做的工作的摘要,以及您在解决问题时遇到的困难的描述。”text.getText(x)
TextField 没有类似这个签名的方法!
我正在尝试让用户输入显示在 textArea 中。 好的,那么您遇到了什么问题? textArea 是一个数组列表。 等等,什么??
【参考方案1】:
您已在 start() 函数中包含 add() 和 del() 函数。您需要将它们移到 start() 函数之外和 StackQueue 类中。 之后,变量 text 和 textArea 应该在 start() 函数之外创建,因为方法 add() 和 del() 正在尝试获取 text 和textArea 变量。
最后,您应该在 add() 和 del() 方法中实现处理元素添加和删除的逻辑。
将以下代码粘贴到 StackQueue.java 文件中。我没有实现删除功能,您也需要调整 add() 方法。我希望你现在能够解决它。
我添加了一个字符串,它将获取文本字段的旧值,并在进一步添加时附加旧值以及新值
public class StackQueue extends Application
TextField text = new TextField();
TextArea textArea = new TextArea();
String oldText;
@Override
public void start(Stage stage) throws Exception
Stack myStack = new Stack();
Button btAdd = new Button("Add");
Button btDel = new Button("Delete");
Button btClear = new Button("Clear");
BorderPane bpane = new BorderPane();
text.setPrefWidth(50);
text.setAlignment(Pos.CENTER_LEFT);
text.setText("Label");
text.clear();
textArea= new TextArea("Text Area");
textArea.setPrefColumnCount(1);
textArea.setPrefRowCount(10);
textArea.clear();
oldText = text.getText();
HBox hBox = new HBox();
hBox.getChildren().addAll(btAdd, btDel, btClear);
bpane.setTop(hBox);
bpane.setCenter(text);
bpane.setBottom(textArea);
Scene scene = new Scene(bpane, 500, 250);
stage.setTitle("Stack Example");
stage.setScene(scene);
stage.show();
EventHandler<ActionEvent> delEvent = event -> del();
btAdd.setOnAction( e ->
textArea.setText(oldText + text.getText());
oldText = oldText + text.getText() +"\n";
);
btDel.setOnAction(delEvent);
public void del()
public static void main(String[] args)
launch(args);
【讨论】:
感谢您的帮助。我像你展示的那样在类中声明了 textField 和 Area 并修复了它。以上是关于从 textField 获取输入并在 textArea 中显示的主要内容,如果未能解决你的问题,请参考以下文章
从 Swift 中的 textField 获取 Webview URL
KivyMD:如何从 python 中添加的 TextField 获取文本