Cha*_*had 5 java swing jtable tablecellrenderer
我想在JTable的列中添加正确的cell-padding,我该怎么办?
我尝试在线搜索,但似乎无法找到明确的答案.
我希望有一个人可以帮助我.
此致,乍得
tra*_*god 11
使用自定义 TableCellRenderer,并指定setHorizontalAlignment(JLabel.RIGHT).有一个相关的例子在这里示出JLabel.CENTER.
附录:我的问题是填充而不是对齐.
如果你想要在单元格内而不是在单元格之间填充,你可以在渲染器中使用边框,正如@Guillaume Polet建议的那样.请注意,边框可以是不对称的; 以下示例仅在右侧填充.
setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 5));
Run Code Online (Sandbox Code Playgroud)
kle*_*tra 10
@ trashgod正确答案的略微增强版本是将边框与填充复合:这样做可以保证默认边框(对焦指示符)不会丢失:
DefaultTableCellRenderer r = new DefaultTableCellRenderer() {
Border padding = BorderFactory.createEmptyBorder(0, 10, 0, 10);
@Override
public Component getTableCellRendererComponent(JTable table,
Object value, boolean isSelected, boolean hasFocus,
int row, int column) {
super.getTableCellRendererComponent(table, value, isSelected, hasFocus,
row, column);
setBorder(BorderFactory.createCompoundBorder(getBorder(), padding));
return this;
}
};
Run Code Online (Sandbox Code Playgroud)
或者使用SwingX 'JXTable和装饰用荧光笔渲染器:
BorderHighlighter hl = new BorderHighlighter(
BorderFactory.createEmptyBorder(0, 10, 0, 10));
hl.setInner(true);
table.addHighlighter(hl);
Run Code Online (Sandbox Code Playgroud)