2012-08-29 3 views
2

여러 파일 경로를 선택하기위한 대화 상자를 만들고 있습니다. 내 대화 상자는 두 개의 패널로 구성됩니다. 「추가」및 「삭제」등의 버튼을위한 버튼과, scrollPane에 랩 된 JTable를 포함한 2 번째의 패널입니다. 테이블에는 하나의 열만 있습니다. 표의 셀은 직접 편집 할 수 없습니다. 사용자가 JFileChooser를 사용하여 파일을 선택하면 해당 파일의 전체 경로가 테이블에 추가됩니다. 대화 상자의 크기를 재조정 할 수는 있지만 파일 경로가 사용자 화면보다 길 경우 가로 스크롤 동작이 필요합니다.크기를 조정할 수있는 JTable의 단일 열에서 가로로 스크롤하는 방법은 무엇입니까?

나는 resizeable table과 horizontal scroll bar의 조합을 연구했다. 그것은 비슷하지만 내 문제는 아닙니다. 일반적인 스크롤 동작은 열의 내용이 아니라 열이 스크롤된다는 것입니다. 가로로 스크롤하려면 단일 열의 내용이 필요합니다.

당신이 다중 또는 단일 열을 스크롤 여부를
+0

1) 질문에 반드시 물음표를 추가하십시오. 2) 더 빨리 도움을 받으려면 [SSCCE] (http://sscce.org/)를 게시하십시오. –

답변

4

중요하지 않습니다 기본 문제가

가 조정할 수있는 두 개의 나사가 있습니다 :-) 시작하는 수평 스크롤을 얻을 수 있습니다 : 이 - 수평 스크롤을 가능하게 테이블의 resizeMode를 설정하면 (자), 디폴트로 항상 테이블의 사이즈를 scrollPane의 사이즈에 맞추어 스크롤하지 않게합니다. - 내용에 맞추어 열의 폭을 변경합니다.

와 같은 의사 코드에 매핑되는 코어 JTable

table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); 
// on receiving a TableModelEvent which might increase the column width 
// calculate new width by measuring pref of the renderer 
int newWidth = ... 
// set it as pref of the column 
table.getColumnModel().getColumn(0).setPreferredWidth(newWidth); 

catch는 resizeMode가 없으면 항상 열의 크기를 조정해야합니다. 너비가 scrollPane보다 작 으면 꼬리쪽에 빈 영역이 있습니다.

JXTable (SwingX project의 일부), 테이블의 prefWidts만큼 가능한 수평 공간을 채우는 첨가 사이징 모드 상위 폭보다 작은 지원 I는 파트라의 것을 선택

table.setHorizontalScrollEnabled(true); 
// on receiving a TableModelEvent which might increase the column width 
// tell the table to re-evaluate 
table.packColumn(0); 
+1

SwingX 스크롤 동작이 Core JDK의 일부가 아닌 이유에 대해 항상 궁금해했습니다. 그것은 내가 사용하는 모든 테이블에 대해 항상 SwingX 스크롤 동작으로 끝납니다. – Robin

+0

감사합니다. 나는 packColumn 메소드가 내가 찾고있는 것이라고 생각한다. –

1

필요하다면 수평 스크롤 바를 나타낸다 테이블 조작에 관한 내 특정 질문을 다루기 때문에 올바른 답. 나는 다른 방식으로 근본 문제를 해결하기 때문에이 대답을 추가하고있다.

단일 열 테이블 대신 내 파일 경로를 나타 내기 위해 JList을 사용하기로했습니다. JTable을 사용하고 싶었던 유일한 이유는 테이블에 줄이 쳐져있는 행의 모양과 JList에 익숙하지 않기 때문입니다. DefaultListCellRenderer을 확장하여 JList의 모양을 편집하는 방법을 발견했습니다. 모양을 편집하는 것에 대해 알았 기 때문에 JList의 자연스런 크기 조정 및 스크롤 동작은 내 요구에 훨씬 더 자연스럽게 적합했습니다.

관련 문제