[英]JTable header alignment
I would like to set the vertical alignment of the label in the header of my JTable-derrived class. 我想在我的JTable派生类的标题中设置标签的垂直对齐方式。
I am aware of setVerticalAlignment(SwingConstants.BOTTOM);
我知道
setVerticalAlignment(SwingConstants.BOTTOM);
My header is much higher than the font and I would like to place the text slightly below the vertical centre. 我的标题比字体高得多,我想将文本放在垂直中心的下方 。
How can I do this, without overriding paint()
? 我如何做到这一点而又不重写
paint()
?
THX 谢谢
one of ways is to set Renderer
, TableHeader
by default returns JLabel
, for example 一种方法是设置
Renderer
,默认情况下TableHeader
返回JLabel
,例如
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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.