簡體   English   中英

如何一次對齊所有jtable單元格和標頭?

[英]How to align all jtable cells and headers at once?

是否有-> 高效 <-方式一次所有內容居中

我不在乎它是在初始化部分還是在初始化之后,都歡迎使用。

到目前為止,我的代碼:

jTable2 = new javax.swing.JTable();

jTable2.setModel(new javax.swing.table.DefaultTableModel(
    new Object [][] {
    },
    new String [] {
        "header1", "header2", "header3"
    }
)); 

我設法使標題居中,但將所有內容逐個居中只是錯誤的:S

DefaultTableCellRenderer renderer;
renderer = (DefaultTableCellRenderer)
            jTable2.getTableHeader().getDefaultRenderer();
renderer.setHorizontalAlignment(JLabel.CENTER);

我想您可以從以下問題獲得參考: java-如何在JTable單元中居中放置一個值? - 堆棧溢出
第二個答案中心的所有帶有循環的列始終對我有效。

PS @camickr提到過,第二個答案可能會導致自定義渲染丟失。

根據如何使用表 ,如果我們使用下面的構造函數。

  • JTable(Object [] [] rowData,Object [] columnNames)
  • JTable(向量rowData,向量columnNames)

然后,他們會將所有數據類型視為字符串。 在這種情況下,第二個答案將很有效。

但是,如果用戶在AbstractTableModel中重寫了getColumnClass(int c)函數( 請參見TableDemo.java ),則第二個答案將導致默認渲染器的丟失:使用第二個答案后,默認渲染器將布爾類型打印為復選框,表格將改為顯示“ true” /“ false”。

因此,如果要使用默認渲染並同時將單元居中。 該答案將幫助您:
java-重寫JTable的DefaultTableCellRenderer以將JTable中的所有單元格居中

這可能是一個舊的帖子,但對於正在尋找與我一樣的問題的人。

這使很多表可以一次輕松地對齊(我在這方面有點懶,所以我一直在尋找並嘗試最簡單的方法:P)。

    ArrayList<JTable> Tables = new ArrayList(); //JTable or javax.swing.JTable ... as it confused me as a beginner in Java codding

    Tables.add(jTable1);
    Tables.add(jTable2);
        //.........
        //.........

    DefaultTableCellRenderer centerRenderer_c = new DefaultTableCellRenderer();
    DefaultTableCellRenderer centerRenderer_h = new DefaultTableCellRenderer();
    centerRenderer_c.setHorizontalAlignment( javax.swing.JLabel.CENTER );

    for(JTable t : Tables){
        t.setComponentOrientation(ComponentOrientation.RIGHT_TO_LEFT);// this will reverse the headers visually 

        //for the headers :
        centerRenderer_h = (DefaultTableCellRenderer)t.getTableHeader().getDefaultRenderer();
        centerRenderer_h.setHorizontalAlignment( javax.swing.JLabel.CENTER );

        //for cells :
        for(int i=0; i < t.getColumnCount(); i++){
            t.getColumnModel().getColumn(i).setCellRenderer(centerRenderer_c);
        }
    }

暫無
暫無

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

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