对齐JTable中单元格的值?

Ven*_*kat 24 java jtable alignment

我不知道如何在JTable中对齐单元格的值.

对于Ex,Jtable显示,姓名薪水Mr.X 100000.50 XXXX 234.34 YYYy 1205.50

我想以下列格式对齐"工资".

   Name      Salary
   Mr.X      100000.50
   XXXX         234.34
   YYYy        1205.50
Run Code Online (Sandbox Code Playgroud)

如何在JTable上面对齐

cam*_*ckr 43

无需为此创建自定义类,只需使用默认渲染器:

DefaultTableCellRenderer rightRenderer = new DefaultTableCellRenderer();
rightRenderer.setHorizontalAlignment(SwingConstants.RIGHT);
table.getColumnModel().getColumn(???).setCellRenderer(rightRenderer);
Run Code Online (Sandbox Code Playgroud)

或者更好的方法是在表中实际存储Double值,然后使用正确的数字渲染器,并且数字渲染器自动右对齐.然后,您可以使用表格格式渲染器自定义数字的格式.


Adr*_*ian 10

我们需要做一个小的修正,正确的方法是DefaultTableCellRenderer.RIGHT

DefaultTableCellRenderer rightRenderer = new DefaultTableCellRenderer();
rightRenderer.setHorizontalAlignment(DefaultTableCellRenderer.RIGHT);
tableExample.getColumn("Price").setCellRenderer( rightRenderer );
Run Code Online (Sandbox Code Playgroud)

注意与camickr的原始响应的差异,"Price"是列的名称,根据情况改变.

  • `SwingConstants.RIGHT`是适当的常量. (2认同)
  • 实际上在使用`DefaultTableCellRenderer.RIGHT`时,Eclipse会给出警告_“The static field SwingConstants.RIGHT should be used directly”_ (2认同)

Lê *_*Duy 5

一种简单的方法是使用DefaultTableModel和override方法getColumnClass()
Ex:

DefaultTableModel model = new DefaultTableModel() {
        @Override
        public Class getColumnClass(int columnIndex) {
            if (columnIndex == 0) {
                return Integer.class;
            } else {
                return String.class;
            }
        }
    };
Run Code Online (Sandbox Code Playgroud)

如果返回Integer,则列将对齐anh如果返回String,则列将向左对齐.