2017-11-05 11 views
0

메신저는 스크롤 패널 안에있는 격자판 (다음 코드 닛펫의 refPane)에 VBox를 곱하려고합니다.javafx의 스크롤 가능한 격자 팬

int columnIndex = 0; 
    int rowIndex = 0; 
    int boxWidth = windowWidth/ITEMS_PER_ROW; 
    int boxHeight = windowHeight/ITEMS_PER_COLUMN; 

    for(int i=0; i<items.size(); i++){ 
     VBox vBox = new VBox(); 
     vBox.setPrefWidth(boxWidth); 
     vBox.setPrefHeight(boxHeight); 

     Label label1 = new Label(); 
     label1.setText("ImgPlaceholder"); 
     label1.setPrefWidth(boxWidth); 
     label1.setPrefHeight(boxHeight/100 * 70); 
     vBox.getChildren().add(label1); 

     Label label2 = new Label(); 
     label2.setText("Description"); 
     label2.setPrefWidth(boxWidth); 
     label2.setPrefHeight(boxHeight/100 * 30); 
     label2.setPadding(new Insets(0,0,0, 10)); 
     vBox.getChildren().add(label2); 

     refPane.add(vBox, columnIndex, rowIndex); 

     if(columnIndex != 0 && columnIndex % GAMES_PER_ROW == 0){ 
      rowIndex++; 
      columnIndex = 0; 
     }else { 
      columnIndex++; 
     } 

한 행에 ITEMS_PER_ROW 개의 Vbox를 더 이상 추가하지 않고 다음 행에 계속 추가합니다. 또한 ITEMS_PER_COLUM이 보이지 않는 행이 더 있어야합니다. 문제는, ITEMS_PER_ROW * ITEMS_PER_COLUMN을 그리드에 추가하면, 스크롤 할 수있는 대신에 vbox는 단지 크기가 작아진다는 것입니다.

어떤 아이디어? 미리 감사드립니다.

답변

1

javafx는 VBox의 그리드 창 확대에 우선 순위를 매기고 있습니다. 각 VBox의 minHeightprefHeight과 같게 설정하여 세로로 축소되지 않도록하십시오.

+0

그게 쉬웠습니다. 고마워요 :) – cyden

+0

@cyden 대단히 환영합니다. – luckydog32