2012-10-17 4 views
10

JavaFX 2에서 TableView를 사용하면 마술처럼 기존 열의 크기를 조정하는 대신 하나의 열이 추가 된 것 같습니다. 다음 스크린 샷을 참조하십시오.TableView에 지정된 것보다 많은 열이 있습니다.

기대하는 바 : 두 열 모두 50 %의 공간을 가져야하며 세 번째 열 (이름이 없거나 비어 있음)은 추가되지 않아야합니다.

enter image description here

만든 장면 빌더, FXML 코드를 사용하여 :

<?import java.lang.*?> 
<?import java.util.*?> 
<?import javafx.scene.control.*?> 
<?import javafx.scene.layout.*?> 
<?import javafx.scene.paint.*?> 

<BorderPane id="BorderPane" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml"> 
    <top> 
    <TableView prefHeight="200.0" prefWidth="200.0"> 
     <columns> 
     <TableColumn prefWidth="75.0" text="Column X" /> 
     <TableColumn prefWidth="75.0" text="Column X" /> 
     </columns> 
    </TableView> 
    </top> 
</BorderPane> 
+0

참조 [http://stackoverflow.com/q/11033404/682495](http://stackoverflow.com/q/11033404/682495) –

+0

감사 Uluk에, 그 도움이! 답으로 게시하여 올바른 것으로 선택할 수 있습니다 :-)이 이상한 행동에 대해 생각해보십시오. –

+2

기본 열 폭 동작은 열을 열의 가장 넓은 요소로 조정하기 때문에 발생합니다. 따라서 빈 공간이 사용되지 않습니다. –

답변

26

사용 이렇게하면 테이블 열 헤더에있는 여분의 공간이 분산 될 수 있도록

table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY); 

을 기둥들. 이 분포에서 열의 최대 너비와 최소 너비가 물론 고려됩니다.
기본적으로 테이블 열이 처음에 원하는 너비를 차지하는 곳에서는 TableView.UNCONSTRAINED_RESIZE_POLICY이 사용됩니다.

+0

FXML에서도 그렇게 할 수 있습니까? – user3111525

+0

@ user3111525, 예. ''로 시도하십시오. 시도하지는 않았지만 작동해야합니다. –

+0

원하는 너비를 사용할 수 있습니까? 추가 열을 오른쪽에 표시하지 않습니까? UNCONSTRAINED와 CONSTRAINED 정책을 결합하는 것. – smalafeev

2

Uluk Bly의 답변은 코드에 맞습니다.

또한, Scenebuilder를 사용하여, (제약) 동일하게 속성 드롭 다운 창에서 정책을 설정할 수 있는지 확인하고, 그렇게처럼 FXML 파일에 표시해야합니다 좋았다

<columnResizePolicy> 
    <TableView fx:constant = "CONSTRAINED_RESIZE_POLICY"/> 
    </columnResizePolicy> 
1

을 나 자바 FX 2.2

table.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY); 
+1

이유가 무엇인지 설명하는 텍스트를 추가해야합니다. –

관련 문제