2016-09-27 10 views
0

Я делаю проект JavaFx, связанный с хранилищем данных documentum. Мне нужно получить некоторые данные из хранилища данных, вставить и упорядочить их в табличной форме, в которой я использую GridPanes. Поскольку данные варьируются от одного объекта к другому, я должен был сделать свой код динамичным и использовать программный графический интерфейс. Ну, нет проблем с извлечением данных и их загрузкой в ​​GridPane. Однако мне приходится сталкиваться с некоторыми проблемами при разработке интерфейса этого GridPan. Я создал GridPane под названием «aclInfo» в моем файле FXML, и я пытаюсь создать свою новую GridPane внутри него. Следующий код, который я написал:Я не могу настроить мою GridPane прагматично в JavaFx

public void test (){ 
    aclInfo.getChildren().clear(); 

try{ 


    for (int i = 0 ; i <= listOfAcls.size() - 1 ; i ++){ 

     GridPane mainGridPane = new GridPane(); 

     mainGridPane.setStyle("-fx-grid-lines-visible: true"); 
     //mainGridPane.setStyle("-fx-background-color :red"); 


     RowConstraints row0 = new RowConstraints(); 
     RowConstraints row1 = new RowConstraints(); 
     row0.setMinHeight(20); 
     row1.setMinHeight(32); 

     mainGridPane.getRowConstraints().addAll(row0 , row1); 


     ColumnConstraints mianCol0 = new ColumnConstraints(); 



     mianCol0.setMinWidth(911); 


     mainGridPane.getColumnConstraints().addAll(mianCol0); 


     GridPane title = new GridPane(); 
     ColumnConstraints col0 = new ColumnConstraints(); 
     ColumnConstraints col1 = new ColumnConstraints(); 
     ColumnConstraints col2 = new ColumnConstraints(); 
     col0.setMinWidth(303.66); 
     col1.setMinWidth(303.66); 
     col2.setMinWidth(303.66); 
     title.getColumnConstraints().addAll(col0 , col1 , col2); 


     //title.setStyle("-fx-grid-lines-visible: true"); 

     GridPane desc = new GridPane(); 
     RowConstraints descrow0 = new RowConstraints(); 
     RowConstraints descrow1 = new RowConstraints(); 
     descrow0.setMinHeight(20); 
     descrow0.setMinHeight(22); 

     desc.getRowConstraints().addAll(descrow0 , descrow1); 


     ColumnConstraints desccol0 = new ColumnConstraints(); 
     ColumnConstraints desccol1 = new ColumnConstraints(); 
     ColumnConstraints desccol2 = new ColumnConstraints(); 
     desccol0.setMinWidth(303.66); 
     desccol1.setMinWidth(303.66); 
     desccol2.setMinWidth(303.66); 

     desc.getColumnConstraints().addAll(desccol0, desccol1,desccol2); 
     //desc.setStyle("-fx-background-color :red"); 
     desc.setStyle("-fx-grid-lines-visible: true"); 


     Text aclName = new Text(listOfAcls.get(0)); 
     Text roid = new Text ("r_object_id"); 
     Text rap = new Text ("r_accessor_permit"); 
     Text ran = new Text ("r_accessor_name"); 
     Text roidValue = new Text (holding.get(i).r_object_id); 
     Text rapValue = new Text (holding.get(i).r_accessor_permit); 
     Text ranValue = new Text (holding.get(i).r_accessor_name); 





     title.add(aclName, 1, 0); 
     title.setHalignment(aclName, HPos.CENTER); 
     desc.add(roid , 0 , 0); 
     desc.setHalignment(roid, HPos.CENTER); 
     desc.add(ran , 1 , 0); 
     desc.add(rap , 2 , 0); 
     desc.add(roidValue, 0 , 1); 
     desc.add(rapValue, 1 , 1); 
     desc.add(ranValue, 2 , 1); 

     mainGridPane.add(title, 0, 0); 
     mainGridPane.add(desc, 0, 1); 
     aclInfo.add(mainGridPane, 0 , i); 


    } 




}catch(Exception e){ 
    Alert alert = new Alert (Alert.AlertType.ERROR , e.getLocalizedMessage()); 
    alert.showAndWait(); 
} 

} 
} 

Я не могу управлять, чтобы centerize мой текст внутри GridPane.

Любая идея, где я делаю ошибку :)

+1

Будет хорошо, если вы можете поместить весь код, потому что все сложно восстановить. Для 2 вы получаете свойство, но вы должны установить свойство: aclInfo.setGridLinesVisible (true); и для 3 использования также: aclName.setWrappingWidth (двойное значение) вы должны установить ширину для обертывания – BadVegan

+0

@BadVegan Спасибо за ваш комментарий. Это было полезно. Но я столкнулся с другим вопросом. Когда я устанавливаю true как аргумент «setGridLinesVisible()», мне предлагается удалить этот аргумент. Однако, когда я использую css, он работает нормально. Любая идея почему? ;) –

+0

hmm Я не знаю, как это возможно, GridPane gridpane = new GridPane(); gridpane.setGridLinesVisible (истина); если я объявляю что-то вроде этого, он работает, и я вижу строки – BadVegan

ответ

1

Вы также можете поставить выравнивание для всех колонки:

ColumnConstraints desccol0 = new ColumnConstraints(); 
desccol0.setHalignment(HPos.CENTER); 
ColumnConstraints desccol1 = new ColumnConstraints(); 
desccol0.setHalignment(HPos.CENTER); 
ColumnConstraints desccol2 = new ColumnConstraints(); 
desccol0.setHalignment(HPos.CENTER); 

или строка

RowConstraints descrow1 = new RowConstraints(); 
descrow1.setValignment(VPos.CENTER); 

и у вас есть меньше кода

0

Ну, вот идентификатор, как конечный рабочий код выглядит следующим образом:

public void test (){ 
    aclInfo.getChildren().clear(); 

try{ 


    for (int i = 0 ; i <= listOfAcls.size() - 1 ; i ++){ 

     GridPane mainGridPane = new GridPane(); 

     mainGridPane.setStyle("-fx-grid-lines-visible: true"); 
     //mainGridPane.setStyle("-fx-background-color :red"); 


     RowConstraints row0 = new RowConstraints(); 
     RowConstraints row1 = new RowConstraints(); 
     row0.setMinHeight(20); 
     row1.setMinHeight(32); 

     mainGridPane.getRowConstraints().addAll(row0 , row1); 


     ColumnConstraints mianCol0 = new ColumnConstraints(); 



     mianCol0.setMinWidth(911); 


     mainGridPane.getColumnConstraints().addAll(mianCol0); 


     GridPane title = new GridPane(); 
     ColumnConstraints col0 = new ColumnConstraints(); 
     ColumnConstraints col1 = new ColumnConstraints(); 
     ColumnConstraints col2 = new ColumnConstraints(); 
     col0.setMinWidth(303.66); 
     col1.setMinWidth(303.66); 
     col2.setMinWidth(303.66); 
     title.getColumnConstraints().addAll(col0 , col1 , col2); 



     GridPane desc = new GridPane(); 
     RowConstraints descrow0 = new RowConstraints(); 
     RowConstraints descrow1 = new RowConstraints(); 
     descrow0.setMinHeight(20); 
     descrow0.setMinHeight(22); 

     desc.getRowConstraints().addAll(descrow0 , descrow1); 


     ColumnConstraints desccol0 = new ColumnConstraints(); 
     ColumnConstraints desccol1 = new ColumnConstraints(); 
     ColumnConstraints desccol2 = new ColumnConstraints(); 
     desccol0.setMinWidth(303.66); 
     desccol1.setMinWidth(303.66); 
     desccol2.setMinWidth(303.66); 

     desc.getColumnConstraints().addAll(desccol0, desccol1,desccol2); 

     desc.setStyle("-fx-grid-lines-visible: true"); 


     Text aclName = new Text(listOfAcls.get(0)); 
     Text roid = new Text ("r_object_id"); 
     Text rap = new Text ("r_accessor_permit"); 
     Text ran = new Text ("r_accessor_name"); 
     Text roidValue = new Text (holding.get(i).r_object_id); 
     Text rapValue = new Text (holding.get(i).r_accessor_permit); 
     Text ranValue = new Text (holding.get(i).r_accessor_name); 





     title.add(aclName, 1, 0); 

     desc.add(roid , 0 , 0); 
     title.setHalignment(aclName, HPos.CENTER); 
     desc.setHalignment(roid, HPos.CENTER); 
     desc.setHalignment(ran, HPos.CENTER); 
     desc.setHalignment(rap, HPos.CENTER); 

     desc.setHalignment(roidValue, HPos.CENTER); 
     desc.setHalignment(ranValue, HPos.CENTER); 
     desc.setHalignment(rapValue, HPos.CENTER); 


     desc.add(ran , 1 , 0); 
     desc.add(rap , 2 , 0); 
     desc.add(roidValue, 0 , 1); 
     desc.add(rapValue, 1 , 1); 
     desc.add(ranValue, 2 , 1); 

     mainGridPane.add(title, 0, 0); 
     mainGridPane.add(desc, 0, 1); 
     aclInfo.add(mainGridPane, 0 , i); 


    } 




}catch(Exception e){ 
    Alert alert = new Alert (Alert.AlertType.ERROR , e.getLocalizedMessage()); 
    alert.showAndWait(); 
} 

} 
}