java - 如何让文本区域返回字符串数组列表而不仅仅是字符串

标签 java javafx

对于我的个人项目,我已经为其控制台版本编写了代码,我需要一个字符串的ArrayList。 ArrayList 的字符串是通过控制台输入添加的。我就是这样做的:

 ArrayList<String> input = new ArrayList<>();
 Scanner sc = new Scanner(System.in);
 while (sc.hasNextLine()) {
        String lineNew = sc.nextLine();
        if (lineNew.isEmpty()) {
            break;
        }
        input.add(lineNew);
    }

所以我基本上将 Scanner 读取的每一行添加到 ArrayList 中。

所以我在 JavaFX 版本中所做的是创建一个文本区域,从中获取输入。打印输出的类后,我看到文本区域的 gettext() 方法返回一个 String 而不是 ArrayList,它已经是由于包含的输入进入,它本身有点奇怪。无论如何,是否有一种方法可以返回字符串的 ArrayList 而不仅仅是带有文本区域的字符串或不同类型的文本字段,或者我是否需要从长字符串中创建子字符串并放入将其放入 ArrayList 中,或者我还可以做其他事情。

提前致谢。

最佳答案

getText()正确且可预测地,将返回输入到 TextArea 中的整个文本。 。为了获得ArrayList<String> ,您需要自己进行转换。

值得庆幸的是,这样做非常简单。字符串有 split()方法,允许您通过基于分隔符分割字符串来创建数组。在您的情况下,您将使用换行字符,或 \n 。将其与 Arrays 结合起来类(class),你会得到一个愉快而轻松的ArrayList TextArea 中的每一行:

ArrayList<String> textLines = 
    new ArrayList<>(Arrays.asList(textArea.getText().split("\n")));
<小时/>

这是一个简单的 MCVE 演示:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextArea;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

import java.util.ArrayList;
import java.util.Arrays;

public class Main extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {

        // Just a simple interface
        VBox root = new VBox(5);
        TextArea textArea = new TextArea() {{
            setWrapText(true);
        }};
        Button btnGetArray = new Button("Print Array");

        // Set the action of the button to print the result of creating the ArrayList
        btnGetArray.setOnAction(event -> {
            System.out.println(getStringArray(textArea.getText()));

        });

        // Show the interface        
        root.getChildren().addAll(textArea, btnGetArray);
        primaryStage.setScene(new Scene(root));
        primaryStage.show();
    }

    private ArrayList<String> getStringArray(String string) {
        // This method builds an array list by taking the full String and splitting it
        // at each new line (\n) character.
        return new ArrayList<>(Arrays.asList(
                string.split("\n")
        ));
    }
}

关于java - 如何让文本区域返回字符串数组列表而不仅仅是字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51201406/

相关文章:

java - PrimeFaces 仪表板

java - java访问sql数据库时返回错误

java - 单击“ TableView ”行时将文本设置为“标签”

java - 在 Eclipse 中创建 JavaFX 自包含应用程序(使用自定义 JDK)

java - 装饰图案钢琴应用

java.util.concurrent

java - JSONObject 不从二维码获取数据

java - 我无法从 Activity 调用 Fragment 方法

JavaFX 绑定(bind)失败,返回 "Cannot bind to untyped object."

java - 如何通过gradle运行多个Java类?