Как настроить автоматическое заполнение текстового поля в JavaFx - PullRequest
0 голосов
/ 23 мая 2018

Я использую привязку TextFields ControlFx, которая работает найти.Дело в том, что всплывающие значения «Предложение» содержат введенное значение.Например, если я введу «М», значения будут «Эмма», «Макс», «Розмарин», «Мэтью».Поэтому мой главный вопрос - как сделать предложение, чтобы только вывести значения Начиная с «M», например, «max», «Mathew». Это мой код. Он выбирает имя из базы данных и добавляет их в ArrayList

* 1002.*

1 Ответ

0 голосов
/ 23 мая 2018

Вот пример приложения, которое демонстрирует ваш вопрос.

Этот фрагмент выполняет поиск в исходном списке подстроки и возвращает каждый элемент в списке, который начинается с подстроки.этот фрагмент должен работать с вашим кодом.

Код ключа:

TextFields.bindAutoCompletion(textFieldSearch, t -> {
    return list.stream().filter(elem -> 
    {
        return elem.toLowerCase().startsWith(t.getUserText().toLowerCase());
    }).collect(Collectors.toList());
});

Полное приложение:

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import org.controlsfx.control.textfield.TextFields;

/**
 *
 * @author blj0011
 */
public class JavaFXApplication193 extends Application
{

    @Override
    public void start(Stage primaryStage)
    {
        List<String> list = new ArrayList();
        list.add("Max");
        list.add("moon");
        list.add("am");
        list.add("two");

        TextField textFieldSearch = new TextField();
        TextFields.bindAutoCompletion(textFieldSearch, t -> {
            return list.stream().filter(elem
                    -> {
                return elem.toLowerCase().startsWith(t.getUserText().toLowerCase());
            }).collect(Collectors.toList());
        });

        StackPane root = new StackPane(textFieldSearch);
        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);
    }

}
...