2010-07-26 4 views
1

현재 프로젝트에서는 JTable 기반 GUI를 작성하고 있습니다. 주요 특징 중 하나는 시간에 따라 변하는 내용에 따라 런타임에 모든 셀의 크기를 조정하는 기능입니다. 응용 프로그램이 시작될 때 현재 모든 셀의 높이와 너비가 같습니다. 나는 그것을 더 정교한 접근법으로 바꾸고 싶다. "콘텐츠"가 적절히 표시되는 데 필요한 공간을 어떻게 든 결정할 수 있는지 궁금합니다. 빈 공간이나 무언가를 자르지 않고 말입니다.JComponent의 다른 서브 클래스에 필요한 표시 공간의 계산

"내용"은 우선 순위를 나타내는 문자열입니다. 그것은 데이터베이스에서로드되고 그것에 대해 어떠한 가정도 할 수 없습니다. null 일 가능성이 있습니다. 이 경우 해당 셀의 모든 기본 크기가 있어야합니다.

장기적으로 사진, 비디오 등 모든 종류의 콘텐츠가 표시됩니다.

문자열의 길이를 계산하기 위해 FontMetrics를 사용해 보았습니다. 하지만 JTextPanes를 사용하여 표시하기 때문에 정확하게 작동하지 않습니다. 때로는 줄이 채워지지 않기 때문에 JTextPanes 자동 줄 바꿈과 관련이 있다고 생각합니다. 이것은 나의 계산을 망쳐 놓는다.

짧은 이야기 : 위에 설명 된 기능을 구현하려면 디자인 가이드 라인이 필요합니다. 나는 당신들 중 한 명은 똑똑한 사람이 그것을하는 법을 압니다. 사전에

감사합니다, DeKay는

+0

귀하의 정확한 문제, 계산 또는 표시는 무엇입니까? 주어진 행의 높이 또는 주어진 열의 위젯을 사용자 정의하고 싶습니까? –

+0

문제는 필요한 공간을 계산하는 것입니다. 셀의 두 치수를 사용자 정의하고 싶습니다.사용자는 셀을 클릭 할 수 있어야하며 셀은 더 커야합니다. 이 모든 것은 이미 구현되어 있습니다. 그래서 다시 문제는 어떻게 세포가 "커다란"것인지를 결정하는 방법입니다. – user402026

+0

그리고 셀의 크기는 셀의 문자열 내용에만 의존합니다. 맞습니까? –

답변

-1

here 보면, JTable로 행의 높이를 설정하려면 :

public void setRowHeight(int row, int rowHeight) 

을 열 너비를 설정하려면 TableColumn의 API 봐야 here :

public void setWidth(int width) 

희망이 도움이 될 수 있습니다

+0

고맙습니다. API에 대해 알고 있습니다. 위의 코멘트를 보시고, 저의 문제를 해결해 주시기 바랍니다. – user402026

1

JTextPane을 렌더링에 사용하는 경우 this Q&A이 유용 할 수 있습니다.

변환 textPane.modelToView()은 항상 null으로 나옵니다.

참고 : modelToView "좌표가 직사각형 ... 또는 구성 요소가 아직 양수 크기가 아니면 null입니다."

나는 일반적으로 필요한 공간의 양을 계산하는 방법을 아직 모른다.

IIUC, camickr의 예 @ 이해하는 열쇠는 validate() 다음 텍스트 창의 변경된 경계를 포함하는 setPreferredSize()의 사용이다 "컨테이너 다시 그 서브 컴퍼넌트를 배치하게하는 데 사용됩니다."

+0

고마워, 내가 보게. – user402026

+0

예제가 제대로 작동하지만 내 컨텍스트에서 제대로 작동하지 않습니다. textPane.modelToView (someInt) 변환은 항상 null로 변환됩니다. 그런 점을 제외하면 내 전체 문제를 해결하지 못합니다. 나는 여전히 필요한 모든 공간을 계산하는 방법을 모르고있다. 즉, 컴포넌트에 대한 설명이 전혀 없다. 더 많은 도움을 주시면 대단히 감사하겠습니다. – user402026

+0

@ dekay5555 : 나는 정교하게 작성했습니다. – trashgod

관련 문제