【问题标题】:javafx - how to create a loop of graphic componentsjavafx - 如何创建图形组件循环
【发布时间】:2017-03-29 22:50:15
【问题描述】:

在我的 javafx 应用程序中,我想创建一个场景,我可以在其中显示数据库中所有用户的用户名。

确切地说,我想显示一个标签列表,其中每个标签都有一个用户名。 (标签的数量取决于用户的数量)。

注意:我可以用一个列表和一个 foreach 循环在 java 中做到这一点,但这是我第一次使用 javafx,我想知道如何创建图形组件的循环。

谢谢。

【问题讨论】:

    标签: java javafx javafx-8


    【解决方案1】:

    这里有几个替代方案,一个示例只是循环并向布局窗格的子级添加新标签,另一个示例是使用内置的 ListView 组件。当然还有其他选择。您选择使用哪一种取决于您需要实现的功能。

    import javafx.application.Application;
    import javafx.collections.FXCollections;
    import javafx.geometry.Insets;
    import javafx.scene.Scene;
    import javafx.scene.control.Label;
    import javafx.scene.control.ListView;
    import javafx.scene.layout.VBox;
    import javafx.stage.Stage;
    
    public class UserDisplay extends Application {
        @Override public void start(Stage stage) {
            String[] users = { "Huey", "Dewey", "Louie" };
    
            VBox layout = new VBox(10);
    
            // ALTERNATIVE 1: add labels in a loop.
            for (String user: users) {
                Label userLabel = new Label(user);
                layout.getChildren().add(userLabel);
            }
    
            // ALTERNATIVE 2: use the built-in ListView component.
            ListView<String> listView = new ListView<>(
                    FXCollections.observableArrayList(users)
            );
            layout.getChildren().add(listView);
    
            layout.setPadding(new Insets(10));
            layout.setPrefSize(100,200);
    
            stage.setScene(new Scene(layout));
            stage.show();
        }
    
        public static void main(String[] args) {
            launch(args);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-20
      • 1970-01-01
      • 2021-01-06
      相关资源
      最近更新 更多