Удалить строки текста в JavaFX - PullRequest
0 голосов
/ 04 марта 2019

Я работаю с JavaFX около двух недель, и у меня возникают проблемы с TextArea при удалении строк.Я добавил следующую информацию в TextArea, но как я могу удалить определенную строку?

  • Мэри Джонсон 44,33
  • Лора Смит 55,12
  • Джеймс Чарльз 23,56

Как я могу удалить строку с Laura Smith 55.12 и оставить там две другие?Я получил первый персонаж, но я не уверен, куда идти дальше.Пожалуйста, помогите.

for (String line : reservationBox.getText().split("\n")) {
    if(line.contains(nameText.getText() + " " + priceText.getText())) {
    char firstCharacter = nameText.getText().charAt(0); //get character of the first letter of the name
    reservationBox.deleteText( ?? );
    }
}

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Посмотрите на это простое приложение ниже и примените все необходимое к вашему коду:

/**
 *
 * @author Momir Sarac
 */
public class DeleteSpecificLineFromTextArea extends Application {

    @Override
    public void start(Stage primaryStage) {

        TextArea textArea = new TextArea();
        Button button = new Button("Get it");


        textArea.setText("Adam Smith 32\nJenny Curry 52\nTako Yoshimoto 56\n");

        String nameText = "Jenny Curry 52";

         button.setOnAction(new EventHandler<ActionEvent>() {

            @Override
            public void handle(ActionEvent event) {

        for (String line : textArea.getText().split("\n")) {
            if (line.contains(nameText)) {
                textArea.setText(textArea.getText().replace(line, ""));
            }
        }
        textArea.setText(textArea.getText().replaceAll("[\\\\\\r\\\\\\n]+", "\n"));
            }
        });

        StackPane root = new StackPane();
        root.getChildren().addAll(textArea,button);

        Scene scene = new Scene(root, 300, 250);

        primaryStage.setTitle("Hello World!");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        launch(args);
    }

}
0 голосов
/ 04 марта 2019
  1. Инициализируйте две переменные, которые будут служить начальным и конечным индексами.
  2. Первый индекс будет относиться к первой букве слова, которое нам нужно удалить.
  3. Последняяindex будет суммой начального индекса и длины нужного нам слова минус 1.
  4. Используйте deleteText(startIndex, endIndex) для удаления текста.

Посмотрите на кодниже:

    public void start(Stage primaryStage) throws Exception {

        int indexStart = 0; //initialize variables
        int indexEnd = 0;

        TextArea textArea = new TextArea();
        textArea.setText("123\nhello\nabc\ntwentyone\n"); //initialize text in box

        VBox vbox = new VBox(textArea);

        Scene scene = new Scene(vbox, 200, 100);
        primaryStage.setScene(scene);
        primaryStage.show();

        for(String line : textArea.getText().split("\n")){
            if(line.contains("abc")) { //change this to whatever you need
                indexStart = textArea.getText().indexOf(line.charAt(0)); 
                indexEnd = indexStart + line.length()-1; 
            }

            textArea.deleteText(indexStart, indexEnd); //Delete between indexes
        }
    }

    public static void main(String[] args) {
        Application.launch(args);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...