JTable表格文字居中

传统的Jtable中样式是很不可观的,那么我们就需要修改他的样式,下面就是我写的一个方法 代码如下:

public static void setTableStyle(JTable jtb) {

        //设置选中行的背景色
        //jtb.setSelectionBackground(new Color(224, 242, 255));

        //设置表格每行的高度
        jtb.setRowHeight(35);

        // 设置点击表头自动实现排序
        jtb.setAutoCreateRowSorter(false);
        // 设置表头文字居中显示
        DefaultTableCellRenderer  renderer = (DefaultTableCellRenderer) jtb.getTableHeader().getDefaultRenderer();
        renderer.setHorizontalAlignment(renderer.CENTER);

        // 设置表格中的数据居中显示
        DefaultTableCellRenderer r=new DefaultTableCellRenderer();
        r.setHorizontalAlignment(JLabel.CENTER);
        jtb.setDefaultRenderer(Object.class,r);

        jtb.setFocusable(false);

        jtb.setFont(new Font("新宋体", Font.PLAIN, 18));
        fitTableColumns(jtb);
    }

    // 根据内容自动调节表格的列宽度
    @SuppressWarnings("rawtypes")
    private static void fitTableColumns(JTable myTable)
    {
         myTable.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
         JTableHeader header = myTable.getTableHeader();
         int rowCount = myTable.getRowCount();
         Enumeration columns = myTable.getColumnModel().getColumns();
         while(columns.hasMoreElements())
         {
             TableColumn column = (TableColumn)columns.nextElement();
             int col = header.getColumnModel().getColumnIndex(column.getIdentifier());
             int width = (int)header.getDefaultRenderer().getTableCellRendererComponent
             (myTable, column.getIdentifier(), false, false, -1, col).getPreferredSize().getWidth();
             for(int row = 0; row < rowCount; row++)
             {
                 int preferedWidth = (int)myTable.getCellRenderer(row, col).getTableCellRendererComponent
                 (myTable, myTable.getValueAt(row, col), false, false, row, col).getPreferredSize().getWidth();
                 width = Math.max(width, preferedWidth);
             }
             header.setResizingColumn(column); // 此行很重要
             column.setWidth(width+myTable.getIntercellSpacing().width);
         }
    }

在Jtable中调用setTableStyle方法即可

如下:

JTable表格文字居中_第1张图片

效果如下:
这里写图片描述

你可能感兴趣的:(JAVA,Swing)