Вручную вызвать раскрывающийся список CheckComboBox с JavaFX - PullRequest
0 голосов
/ 05 января 2019

У меня есть CheckComboBox, который я заполняю данными, которые я получаю с веб-сайта следующим способом.

public void getCompanies() {
        // This method is called every time the user types a letter in the URLText box.
        // Grab data from the website and add the data to a list.
        HTMLParser p = new HTMLParser(URLText.getText());
        List<String> a = p.GetCompanyNames();
        // Remove old data so new data can be added.
        dropdownMultiple.getItems().remove(0, dropdownMultiple.getItems().size());

        for(String element : a) {
            dropdownMultiple.getItems().add(element);
        }
    }

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

Другими словами, как я могу активировать событие раскрывающегося списка CheckComboBox, не нажимая на него пользователя?

1 Ответ

0 голосов
/ 05 января 2019

Я предполагаю, что вы говорите о org.controlsfx.control.CheckComboBox. К сожалению, не похоже, что библиотека предоставляет способ программно показывать всплывающее окно. Но если вы не против полагаться на детали реализации, есть способ сделать то, что вы хотите.

Скин CheckComboBox использует JavaFX ComboBox внутри. Этот последний класс имеет метод с именем show, который можно использовать для ручного отображения всплывающего окна. Вы можете получить доступ к этому ComboBox, позвонив по номеру Node.lookup(String).

CheckComboBox<String> box = new CheckComboBox<>();
((ComboBox<?>) box.lookup(".combo-box")).show();

Примечание. Для этого необходимо, чтобы в окне отображалось CheckComboBox.

Напоминаем, что это касается деталей реализации и поэтому может прерваться без уведомления. При просмотре исходного кода это должно работать как для ControlsFX 8.40.14, так и для 9.0.0.

...