【问题标题】:JavaFX, text won't display in TextAreaJavaFX,文本不会显示在 TextArea
【发布时间】:2015-04-04 15:51:22
【问题描述】:

我已经完成了大部分程序,唯一的问题是让数字显示在TextArea 中。编写一个程序,让用户从图形用户界面输入数字并将它们显示在文本区域中。使用LinkedList 存储数字。不要重复数字。添加 sort、shuffle、reverse 对列表进行排序。

package storedInLinkedList;

import java.util.Collections;
import java.util.LinkedList;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.geometry.Orientation;
import javafx.geometry.Pos;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.scene.control.ScrollPane;

public class StoredInLinkedList extends Application{

    TextField txt = new TextField();
    TextArea tArea = new TextArea();
    Label message = new Label("Enter a Number: ");
    Button sort = new Button("Sort");
    Button shuffle = new Button("Shuffle");
    Button reverse = new Button("Reverse");
    private LinkedList<Integer> list = new LinkedList<>();

    @Override
    public void start(Stage primaryStage){
        BorderPane bPane = new BorderPane();


        txt.setAlignment(Pos.TOP_RIGHT);
        bPane.setCenter(txt);
        bPane.setBottom(tArea);

        HBox hBox = new HBox(message, txt);
            bPane.setTop(hBox);

        HBox buttons = new HBox(10);
            buttons.getChildren().addAll(sort, shuffle, reverse);
        bPane.setBottom(buttons);
            buttons.setAlignment(Pos.CENTER);
        VBox vBox = new VBox();
            vBox.getChildren().addAll(hBox, tArea, buttons);

        bPane.setCenter(new ScrollPane(tArea));

        Scene scene = new Scene(vBox, 300,250);
        primaryStage.setTitle("20.2_DSemmes");
        primaryStage.setScene(scene);
        primaryStage.show();

        txt.setOnAction(e -> {
            if(! list.contains(new Integer(txt.getText()))){
                tArea.appendText(txt.getText() + " ");
                list.add(new Integer(txt.getText()));
            }//end if
        });//end action

        sort.setOnAction(e -> {
            Collections.sort(list);
            display();
        });//end action

        shuffle.setOnAction(e -> {
            Collections.shuffle(list);
            display();
        });//end action

        reverse.setOnAction(e -> {
            Collections.reverse(list);
            display();
        });//end action

    }//end stage 

    private void display() {

        for (Integer i: list){
            tArea.setText(null);
            tArea.appendText(i + " ");
        }//end for 
    }//end display

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        launch(args);
    }//end main

}//end class 

【问题讨论】:

    标签: javafx linked-list textarea javafx-8


    【解决方案1】:

    将 textarea 清除代码放在 for 循环之外。否则,您将清除先前附加的文本,因此 textarea 仅包含 list 的最后一个元素:

    private void display() {
        tArea.setText("");  // clear text area
        for (Integer i: list){
            tArea.appendText(i + " ");
        }//end for 
    }/
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-03-15
      • 2020-08-26
      • 1970-01-01
      • 1970-01-01
      • 2019-07-16
      • 1970-01-01
      • 1970-01-01
      • 2018-10-30
      相关资源
      最近更新 更多