簡體   English   中英

如何在Defaulttablemodel JTable中設置數據的對齊方式?

[英]How to set the alignment of data in Defaulttablemodel JTable?

我有這段代碼,其中我將字符串數據作為Object類型數據動態插入到JTable中。 我想將插入到表中的數據對齊到中心。 這是我的代碼

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);
           }

我在這個論壇上搜索了類似的查詢,但徒勞無功。 任何對此的提示將不勝感激。

這個完整的示例演示如何使用DefaultTableCellRenderer來實現setHorizontalAlignment(JLabel.CENTER) 另請參閱本教程部分,了解如何選擇渲染器

圖片

由於這些值都是以字符串開頭的,並且默認渲染器將以任何方式在對象上調用.toString ,為什么不使用String[]而不是Object[]呢?

要回答您的問題,請子類化javax.swing.table.DefaultTableCellRenderer (子類JLabel )並在那里設置對齊方式( setHorizontalTextPosition )。 然后,將該渲染器適當地分配給表,列或單元格。

將單個渲染器用於多個單元。 呈現值后,表將安全地重用它。

  //  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 );
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM