JTable
에 여러 열 머리글을 만들 수있는 방법이 있습니까? 내 말은 일반적으로 단 하나의 행이 있지만 동일한 형식 (머리글)이있는 두 개가 필요하며 그 중 하나의 셀 중 일부를 결합하는 것입니다.자바 스윙 - JTable의 여러 열 헤더?
Header0 | Header123 | Header4 Header0 | Header1 | Header2 | Header3 | Header4
어떤 방법이 있나요 :
는이 같은 뭔가가 필요?
JTable
에 여러 열 머리글을 만들 수있는 방법이 있습니까? 내 말은 일반적으로 단 하나의 행이 있지만 동일한 형식 (머리글)이있는 두 개가 필요하며 그 중 하나의 셀 중 일부를 결합하는 것입니다.자바 스윙 - JTable의 여러 열 헤더?
Header0 | Header123 | Header4 Header0 | Header1 | Header2 | Header3 | Header4
어떤 방법이 있나요 :
는이 같은 뭔가가 필요?
당신은 BasicTableHeaderUI
을 확장 할 수 있으며 모든 유형의 헤더를 그릴 수있는 페인트 방법의 구현을 직접 작성할 수 있습니다. 다음 변경 후 기본 헤더 UI 다음 명령어가 포함 된 table.getTableHeader().setUI(MyTableHeaderUI)
Groupable Header 예는 도움이 될 수있는 몇 가지 오래된 코드입니다.
닉 메이어 (Nick Meyer)는 친절하게 답변 해 주셔서 감사합니다. 귀하의 주소에있는 콘텐츠는 약간 오래된 것입니다. 나는 1.7과 그것을 실행하고 예상대로 작동하지 않았지만 올바른 작동하도록 변경할 수 있습니다. 내가 만든 변경 사항은 다음과 같습니다.
/*
* add these code in GroupableTableHeader
*/
public void updateUI(){
// setUI(this.getUI());
TableCellRenderer renderer = getDefaultRenderer();
if (renderer instanceof Component) {
SwingUtilities.updateComponentTreeUI((Component)renderer);
}
}
/*
* add these code in GroupableTableHeaderUI in 2 places, you must know where
*/
if (renderer == null) {
renderer = header.getDefaultRenderer();
}
/*
* change the getSize method in ColumnGroup
*/
public Dimension getSize(JTable table) {
Component comp = renderer.getTableCellRendererComponent(
table, getHeaderValue(), false, false,-1, -1);
int height = comp.getPreferredSize().height;
int width = 0;
Enumeration en = v.elements();
while (en.hasMoreElements()) {
Object obj = en.nextElement();
if (obj instanceof TableColumn) {
TableColumn aColumn = (TableColumn)obj;
width += aColumn.getWidth();
// width += margin;
} else {
width += ((ColumnGroup)obj).getSize(table).width;
}
}
return new Dimension(width, height);
}
최종 결과입니다.
저는 이것을 전에 사용했고 정말 좋아했습니다. 매력처럼 일했다. –