Java 我想给JTable列添加一个正确的填充,可以吗?
我想在JTable中的列中添加正确的单元格填充,我该怎么做 我试着在网上搜索,但似乎找不到一个明确的答案 我希望有人能帮助我 问候,,Java 我想给JTable列添加一个正确的填充,可以吗?,java,swing,jtable,tablecellrenderer,Java,Swing,Jtable,Tablecellrenderer,我想在JTable中的列中添加正确的单元格填充,我该怎么做 我试着在网上搜索,但似乎找不到一个明确的答案 我希望有人能帮助我 问候,, Chad尝试使用JTable的setInternalcellSpacing(维度d)。这将在两侧设置空格。如果您严格希望它位于一侧,请使用渲染器作为使用TableCellRenderer,并指定setHorizontalAlignment(JLabel.RIGHT)。有一个相关的例子说明了JLabel.CENTER 附录:我的问题是填充,而不是对齐 如果希望填充
Chad尝试使用JTable的setInternalcellSpacing(维度d)。这将在两侧设置空格。如果您严格希望它位于一侧,请使用渲染器作为使用
TableCellRenderer
,并指定setHorizontalAlignment(JLabel.RIGHT)
。有一个相关的例子说明了JLabel.CENTER
附录:我的问题是填充,而不是对齐
如果希望填充在单元格内部,而不是单元格之间,可以在渲染器中使用边框,正如@Guillaume Polet所建议的那样。注意,边界可以是不对称的;下面的示例仅在右侧显示
setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 5));
@trashgood正确答案的一个稍微增强的版本是用填充物复合边框:这样做可以保证默认边框(f.i.焦点指示器)不会丢失:
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;
}
};
或者使用“JXTable”并用荧光笔装饰渲染器:
BorderHighlighter hl = new BorderHighlighter(
BorderFactory.createEmptyBorder(0, 10, 0, 10));
hl.setInner(true);
table.addHighlighter(hl);
什么是
setInternalSpacing
?@trashgood他可能指的是javax.swing.JTable.setIntercellSpacing(Dimension)
是的,我指的是javax.swing.JTable.setIntercellSpacing(Dimension),它设置行边距和列边距(单元格之间空间的高度和宽度),但我的问题是填充而不是对齐。也可以使用自定义TableCellRenderer调整单元格填充吗?@Chad Yes,只需指定setBorder(BorderFactory.createEmptyByOrder(5,5,5,5))代码>我已经在上面详细阐述了@Guillaume Polet的建议。@pstanton:你能改变一下吗?谢谢@Trashgood刚刚把那部分也弄明白了。秋千有时就像一个拼图游戏。