我想在我的 JTable 派生类的标题中设置标签的垂直对齐方式。
我知道 setVerticalAlignment(SwingConstants.BOTTOM);
我的标题比字体高很多,我想将文本放在垂直中心略低于的位置。
如何在不覆盖 paint()
的情况下执行此操作?
谢谢
最佳答案
其中一种方式是设置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;
}
});
关于java - JTable 表头对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8524037/