我无法让我的程序从textField获取用户输入并在textArea中显示它。我正在制作的程序是一个Stack / Queue程序。它有一个用户输入数字的textField。然后有一个按钮接收输入并将其作为堆栈(FILO)显示在textArea中。
编辑1: 我现在可以将用户输入移动到textArea中,但是每当我添加第二个输入时,它只是将旧输入替换为new而不是显示列表。我应该使用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()
{
}
}
答案 0 :(得分:0)
您已在start()函数中包含 add()和 del()函数。您需要将它们移到start()函数之外和StackQueue类内部。 执行此操作后,应在start()函数之外创建变量 text 和 textArea ,因为方法add()和del()正在尝试获取文本的值和textArea变量。
最后,您应该实现逻辑来处理add()和del()方法中元素的添加和删除。
将以下代码粘贴到StackQueue.java文件中。我没有实现删除功能,你也需要调整add()方法。我希望你现在能够解决它。
我添加了一个字符串,该字符串将获取文本字段的旧值,并在与新值一起进行进一步添加时附加旧值</ strong>
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);
}
}