Предварительно заполнить ListView в приложении с FXML - PullRequest
6 голосов
/ 14 марта 2012

У меня есть приложение JavaFX, использующее FXML для создания своего графического интерфейса.

Когда это приложение запускается, мне нужно иметь ListView, в который загружены некоторые значения, например, из базы данных.Итак, как я могу это сделать?

Я знаю, как создать приложение, которое загружает элементы в ListView после нажатия пользователем кнопки или что-то в этом роде (атрибут «onAction» в FXML).Но это меня не устраивает, так как мне нужно, чтобы элементы автоматически загружались в ListView.

Ответы [ 2 ]

15 голосов
/ 24 апреля 2012

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

<ChoiceBox fx:id="baudRates" layoutX="234.0" layoutY="72.0">
    <items>
        <FXCollections fx:factory="observableArrayList">
            <String fx:value="4800" />
            <String fx:value="9600" />
            <String fx:value="19200" />
            <String fx:value="57600" />
            <String fx:value="115200" />
        </FXCollections>
    </items>
</ChoiceBox>

Вам также необходимо включить следующую инструкцию импорта в ваш FXML:

<?import javafx.collections.*?>
9 голосов
/ 14 марта 2012

Если у вас есть fxml с контроллером, как показано ниже:

<AnchorPane xmlns:fx="http://javafx.com/fxml" fx:controller="test.Sample">
    <children>
        <ListView fx:id="listView"/>
    </children>
</AnchorPane>

, вы можете просто реализовать Initializable в вашем контроллере:

public class Sample implements Initializable {
    @FXML
    private ListView listView;

    @Override
    public void initialize(URL url, ResourceBundle rb) {
        // change next line to DB load
        List<String> values = Arrays.asList("one", "two", "three");

        listView.setItems(FXCollections.observableList(values));

    }
}
...