我正在为一个计费设施创建一个应用程序。我想让金额列右对齐显示。如何设置JTable列的右对齐?
DefaultTableCellRenderer rightRenderer = new DefaultTableCellRenderer();
rightRenderer.setHorizontalAlignment(JLabel.RIGHT);
table.getColumnModel().getColumn(4).setCellRenderer(rightRenderer);
试试这个:
JTable tbl = new JTable(3,3) {
DefaultTableCellRenderer renderRight = new DefaultTableCellRenderer();
{ // initializer block
renderRight.setHorizontalAlignment(SwingConstants.RIGHT);
}
@Override
public TableCellRenderer getCellRenderer (int arg0, int arg1) {
return renderRight;
}
};
arg0
是行,arg1
是列,因此简单的例如if(arg1 == 0)
让您将列0中的所有单元格某种方式对齐。无论如何,我正在子类化JTable
以设置特定单元格的自定义颜色(使用prepareRenderer
),而且令人惊讶的是它们不会冲突-除非您想要一个异常,否则请不要返回null
。另外,在执行此操作之前,您不必设置列标题(就像sathya的已接受答案一样)。 - NephNumber
——由右对齐标签呈现。” 只需让TableModel
返回正确的类。作为一个具体的例子,请注意Integer
是一个Number
,同时检查此示例中getColumnClass()
的实现。在这个相关的示例中,零索引colIndex
返回Object.class
,这是“通过显示对象的字符串值的标签进行呈现。”默认情况下,标签是左对齐的。switch (colIndex) {
case 0: return Object.class;
…
}
相比之下,Integer.class
的显示效果是“右对齐的标签”。switch (colIndex) {
case 0: return Integer.class;
…
}
这些是使用类字面量作为运行时类型标记的示例,讨论此处在JTable
的上下文中。http://www.techrepublic.com/article/how-to-justify-data-in-a-jtable-cell/5032692/
http://www.coderanch.com/t/337549/GUI/java/align-data-columns-JTable