繁体   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