如何在JTable单元中居一个值?

Dan*_*ira 27 java swing jtable

如何将值集中在JTable单元格中?我正在使用Netbeans.

cam*_*ckr 54

您需要自定义渲染器.要使第一列居中,您可以执行以下操作:

DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer();
centerRenderer.setHorizontalAlignment( JLabel.CENTER );
table.getColumnModel().getColumn(0).setCellRenderer( centerRenderer );
Run Code Online (Sandbox Code Playgroud)

要使用String数据居中所有列,您可以执行以下操作:

DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer();
centerRenderer.setHorizontalAlignment( JLabel.CENTER );
table.setDefaultRenderer(String.class, centerRenderer);
Run Code Online (Sandbox Code Playgroud)

  • 虽然这是一个老帖子,但它仍然应该更好.你应该使用`SwingConstants.CENTER`而不是`JLabel.CENTER`.虽然,`JLabel.CENTER'也指的是`SwingConstants.CENTER`,但使用泛型常量类会更简洁,而不是在这种情况下不合适的`JLabel`. (4认同)
  • 为什么 `((DefaultTableCellRenderer)table.getDefaultRenderer(String.class)).setHorizo​​ntalAlignment(SwingConstants.CENTER);` 不能代替第二段代码工作?——我试过了,没用,不知道为什么。没有错误,它只是保持不居中。在我看来,这一班轮应该有用。当然,您的代码可以工作。 (2认同)

小智 7

使所有列居中的另一个好方法是使用循环:

 for(int x=0;x<numberofcols;x++){
         table1.getColumnModel().getColumn(x).setCellRenderer( centerRenderer );
        }
Run Code Online (Sandbox Code Playgroud)