2017-03-18 71 views
1

我有这个构造函数,我试图用标签填充gridpane。 我碰到了一堵砖墙,不知道什么是错的。 我需要在1行中创建13个标签。用标签填充GridPane

构造:

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); 
} 

回答

0

(总是张贴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); 
    } 
} 
1

你不添加Label年代到GridPane。此外,您每Label使用新的GridPane s,并且从未在任何地方使用这些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