从textField获取输入并在textArea中显示它

时间:2017-06-27 21:21:55

标签: java javafx

我无法让我的程序从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()
{

}

}

1 个答案:

答案 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);
    }

}