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

如何在JTable单元中居中? 我正在使用Netbeans。

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

 DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer(); centerRenderer.setHorizontalAlignment( JLabel.CENTER ); table.getColumnModel().getColumn(0).setCellRenderer( centerRenderer ); 

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

 DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer(); centerRenderer.setHorizontalAlignment( JLabel.CENTER ); table.setDefaultRenderer(String.class, centerRenderer); 

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

  for(int x=0;x 

干得好:

 import javax.swing.*; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.TableModel; public class JTableUtilities { public static void setCellsAlignment(JTable table, int alignment) { DefaultTableCellRenderer rightRenderer = new DefaultTableCellRenderer(); rightRenderer.setHorizontalAlignment(alignment); TableModel tableModel = table.getModel(); for (int columnIndex = 0; columnIndex < tableModel.getColumnCount(); columnIndex++) { table.getColumnModel().getColumn(columnIndex).setCellRenderer(rightRenderer); } } } 

用法:

 JTableUtilities.setCellsAlignment(table, SwingConstants.CENTER); 

您可以使用SwingConstants.CENTER而不是JLabel.CENTER

我有类似的问题。 我想根据另一个单元格的值对齐单个单元格。 如果单元格X为NULL,则单元格Y应该是右对齐的。 否则,单元格Y应该左对齐。

我发现这个解决方案真有帮助。 它包括创建自定义Render,扩展DefaultTableCellRender。

这是代码:

 public class MyRender extends DefaultTableCellRenderer{ @Override public Component getTableCellRendererComponent(JTable table,Object value,boolean isSelected,boolean hasFocus,int row,int column){ super.getTableCellRendererComponent (table, value, isSelected, hasFocus, row, column); MyTableModel mtm = (MyTableModel)table.getModel(); switch(column){ case Y : if(mla.getValueAt(row,X)!=null) setHorizontalAlignment(SwingConstants.RIGHT); else setHorizontalAlignment(SwingConstants.LEFT); break; } return this; } } 

之后,只需创建一个新的MyRender实例,并将其设置为Y列,在本例中。 当我在表格上加载信息时,我这样做。

 MyRender render = new MyRender(); table.getColumnModel().getColumn(Y).setCellRender(render); 

希望它有用!

 ((DefaultTableCellRenderer) jTable1.getTableHeader().getDefaultRenderer()) .setHorizontalAlignment(JLabel.CENTER); // header to center 

此代码标题中心jtable

 DefaultTableCellRenderer rendar = new DefaultTableCellRenderer(); rendar.setHorizontalAlignment(jLabel1.CENTER); jTable1.getColumnModel().getColumn(0).setCellRenderer(rendar); 

此代码到列中心