有什麼方法可以在JTable
中創建多個列標題?我的意思是,通常只有一行,但我需要其中兩個具有相同的格式(如標題),並將其中一個標題的某些單元格組合在一起。Java Swing - JTable中有多個列標題?
我需要的是這樣的:
Header0 | Header123 | Header4 Header0 | Header1 | Header2 | Header3 | Header4
有什麼辦法?
有什麼方法可以在JTable
中創建多個列標題?我的意思是,通常只有一行,但我需要其中兩個具有相同的格式(如標題),並將其中一個標題的某些單元格組合在一起。Java Swing - JTable中有多個列標題?
我需要的是這樣的:
Header0 | Header123 | Header4 Header0 | Header1 | Header2 | Header3 | Header4
有什麼辦法?
您可以擴展BasicTableHeaderUI
並編寫您自己的paint方法實現,您可以在其中繪製任何類型的頭文件。 此更改後默認標題UI用以下命令table.getTableHeader().setUI(MyTableHeaderUI)
Groupable Header示例是一些可能幫助您的舊代碼。
Nick Meyer非常感謝您的回覆,而您地址中的內容有點過時。我使用jre 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);
}
和最後的結果。
我以前用過這個,真的很喜歡它。像魅力一樣工作 – 2011-06-23 15:43:17