使用FXML在应用程序中预填充ListView

Aga*_*ria 6 javafx javafx-2 fxml

我有使用FXML构建GUI的JavaFX应用程序.

当这个应用程序启动时,我需要有ListView,它有一些值,例如,从数据库加载.那么,我该怎么做呢?

我知道如何创建应用程序,在用户单击按钮后将项目加载到ListView,或类似的东西(FXML中的"onAction"属性).但这不适合我,因为我需要将项目自动加载到ListView.

小智 15

这使我的选择框充满了五种预定的波特率.我假设如果您尝试从控制器添加项目,则列表仅显示这些值(未经测试).

<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>
Run Code Online (Sandbox Code Playgroud)

您还需要在FXML中包含以下import语句:

<?import javafx.collections.*?>
Run Code Online (Sandbox Code Playgroud)

  • 有效,但不要忘记在FXML文件的顶部添加必要的import语句; 比如`<?import javafx.collections.*?>` (4认同)

Ser*_*nev 9

如果你有控制器的fxml,如下:

<AnchorPane xmlns:fx="http://javafx.com/fxml" fx:controller="test.Sample">
    <children>
        <ListView fx:id="listView"/>
    </children>
</AnchorPane>
Run Code Online (Sandbox Code Playgroud)

你可以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));

    }
}
Run Code Online (Sandbox Code Playgroud)