提问者:小点点

用标签填充网格窗格


我有这个构造函数,我正在尝试用标签填满网格窗格。我碰壁了,不知道出了什么问题。我需要在一行中创建13个标签。

构造函数:

public class Labels {
   @FXML
    GridPane gridPane = new GridPane();

    public Labels(String labelname, int columnIndex, int rowIndex) {
        Label label = new Label();
        gridPane.setColumnIndex(label, columnIndex);
        gridPane.setRowIndex(label, rowIndex);
        label.setId(labelname+columnIndex);
        label.setVisible(true);
        label.setText("test");
    }   

}

控制器中的回路:

for(int i2=0; i2<13; i2++){

        Labels labels = new Labels("label", i2, 3);
 }

共2个答案

匿名用户

您没有将Label添加到GridPane。此外,您对每个Label都使用新的GridPane,并且永远不要在任何地方使用这些GridPane

public class Labels {

    private GridPane gridPane = new GridPane();

    public GridPane getGridPane() {
        return gridPane; 
    }

    public void addLabel(String labelname, int columnIndex, int rowIndex) {
        Label label = new Label();
        GridPane.setColumnIndex(label, columnIndex);
        GridPane.setRowIndex(label, rowIndex);
        label.setId(labelname+columnIndex);
        label.setText("test");

        gridPane.getChildren().add(label);
    }   

}
Labels labels = new Labels();

for(int i2=0; i2<13; i2++){
    labels.addLabel("label", i2, 3);
}

GridPane gridPane = labels.getGridPane();
// TODO: display gridPane

匿名用户

(总是张贴一个mcve)

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.GridPane;
import javafx.stage.Stage;

public class LabelsRow extends Application {

    GridPane gridPane;

    @Override
    public void start(Stage primaryStage) {

        gridPane = new GridPane();

        for(int i2=0; i2<13; i2++){
            new Labels("label "+i2 , i2, 3);
        }

        Scene scene = new Scene(gridPane);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public class Labels {

        Labels labels;

        Labels(String labelname, int columnIndex, int rowIndex) {
            Label label = new Label();
            //gridPane.setColumnIndex(label, columnIndex);
            //gridPane.setRowIndex(label, rowIndex);
            gridPane.add(label, columnIndex, rowIndex);
            label.setId(labelname+columnIndex);
            label.setVisible(true);
            label.setText(labelname);
        }

    }

    public static void main(String[] args) {
        launch(args);
    }
}