3
我想在我的JTable-derrived類的頭中設置標籤的垂直對齊方式。JTable頭對齊
我知道setVerticalAlignment(SwingConstants.BOTTOM);
我的頭比字體高得多,我想文將略低於垂直中心。
我該怎麼做,而不是重寫paint()
?
THX
我想在我的JTable-derrived類的頭中設置標籤的垂直對齊方式。JTable頭對齊
我知道setVerticalAlignment(SwingConstants.BOTTOM);
我的頭比字體高得多,我想文將略低於垂直中心。
我該怎麼做,而不是重寫paint()
?
THX
的方法之一是默認返回JLabel
設置Renderer
,TableHeader
,例如
final TableCellRenderer tcrOs = myTable.getTableHeader().getDefaultRenderer();
myTable.getTableHeader().setDefaultRenderer(new TableCellRenderer() {
@Override
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
JLabel lbl = (JLabel) tcrOs.getTableCellRendererComponent(table,
value, isSelected, hasFocus, row, column);
lbl.setForeground(AppVariables.textColor);
lbl.setBorder(BorderFactory.createCompoundBorder(lbl.getBorder(),
BorderFactory.createEmptyBorder(0, 5, 0, 0)));
lbl.setHorizontalAlignment(SwingConstants.LEFT);
if (isSelected) {
lbl.setForeground(Color.red);
lbl.setBackground(Color.lightGray);
} else {
lbl.setForeground(Color.blue);
lbl.setBackground(Color.black);
}
return lbl;
}
});
JTableHeader header = table.getTableHeader();
TableCellRenderer renderer = header.getDefaultRenderer();
renderer.setVerticalAlignment(SwingConstants.BOTTOM);
這是不可能的,一個JLabel的佈局是相當固定的。你可能會嘗試的是設置一個適當大小的不可見圖標,並將文本位置設置爲低於圖標。注意:這將與排序標記衝突,因爲大多數LAF使用圖標。 – kleopatra 2011-12-16 10:03:03
忘了通常的不尋常的要求:爲什麼? – kleopatra 2011-12-16 10:04:41
因爲注意這些微小的細節使事情看起來更好。有時你需要像一個平面設計師,而不是程序員:) – Adam 2011-12-16 10:41:31