0

我有这段代码,其中我将字符串数据动态插入JTableObject类型数据。我想将插入到表格的数据对齐到中心。这是我的代码

private String[] COLUMNS = {"FAMILY MEMBERS", "STAR (NAKSHATRA)"};
           private DefaultTableModel model = new DefaultTableModel(COLUMNS, 0){
               public boolean isCellEditable(int row, int column) {
                    return false;
               }

           };

           private JTable table = new JTable(model);   
public void addRow(String memb, String star) {
              Object[] row = new Object[2];
              row[0]=memb;
              row[1]=star;
              model.addRow(row);
           }

我在这个论坛上搜索了类似的查询,但徒劳无功。对此的任何提示将不胜感激。

4

3 回答 3

1

这个完整的例子展示了如何使用 a DefaultTableCellRendererto effect setHorizontalAlignment(JLabel.CENTER)。另请参阅本教程部分,了解如何选择渲染器

图片

于 2013-09-30T16:42:52.287 回答
0

由于这些值是以字符串开头的,并且默认渲染器只会以.toString任何方式调用对象,为什么不使用String[]而不是Object[]呢?

要回答您的问题,请子类javax.swing.table.DefaultTableCellRenderer(哪些子类JLabel)并在那里设置对齐方式(setHorizontalTextPosition)。然后将该渲染器适当地分配给表、列或单元格。

对多个单元格使用单个渲染器。呈现值后,表将安全地重用它。

于 2013-09-30T16:31:15.803 回答
0
  //  Try this .....

    private String[] COLUMNS = {"FAMILY MEMBERS", "STAR (NAKSHATRA)"};
    private DefaultTableModel model = new DefaultTableModel(COLUMNS, 0)              
           {
                       public boolean isCellEditable(int row, int column) 
                 {
                            return false;
                       }

                   };

   private JTable table = new JTable(model); 
  // To center all columns for string data 
          DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer();
          centerRenderer.setHorizontalAlignment( JLabel.CENTER );
          table.setDefaultRenderer(String.class, centerRenderer); 
            public void addRow(String memb, String star) {
                      Object[] row = new Object[2];
                      row[0]=memb;
                      row[1]=star;
                      model.addRow(row);
           }


// Also you can use like this..
for(int i=0;i<COLUMNS;i++){
         table.getColumnModel().getColumn(i).setCellRenderer( centerRenderer );
        }
于 2013-09-30T16:36:59.900 回答