获取列标题的宽度

时间:2016-09-13 08:55:50

标签: java jdbc resize columnheader

我正在尝试根据列标题和列宽调整列的大小。

我已经取得了一些成功,但这只是一个临时解决方案。

最小宽度I&m; m设置仅适用于一个表,但是我正在预览许多具有不同列标题的表,因此有时这个最小宽度将太小。我想要一种获取最小列标题的列标题宽度并将其分配给此变量的方法。

final TableColumnModel columnModel = table.getColumnModel();
                    for (int column = 0; column < table.getColumnCount(); column++) 
                    {
                        int width = 70; // Min width
                        for (int row = 0; row < table.getRowCount(); row++) 
                        {
                            TableCellRenderer renderer = table.getCellRenderer(row, column);
                            Component comp = table.prepareRenderer(renderer, row, column);
                            width = Math.max(comp.getPreferredSize().width +1 , width);
                        }
                        columnModel.getColumn(column).setPreferredWidth(width);
                    }

更新:

我已经尝试将DefaultTableCellRenderer用于它循环的列,然后获取列标题宽度并将其应用于变量,但它带有此结果

enter image description here

final TableColumnModel columnModel = table.getColumnModel();
                    for (int column = 0; column < table.getColumnCount(); column++) 
                    {
                        DefaultTableCellRenderer colwidth=((DefaultTableCellRenderer)table.getTableHeader().getDefaultRenderer());
                        int width = colwidth.getWidth();
                        for (int row = 0; row < table.getRowCount(); row++) 
                        {
                            TableCellRenderer renderer = table.getCellRenderer(row, column);
                            Component comp = table.prepareRenderer(renderer, row, column);
                            width = Math.max(comp.getPreferredSize().width +1 , width);
                        }
                        columnModel.getColumn(column).setPreferredWidth(width);
                    }

1 个答案:

答案 0 :(得分:0)

table.getColumnModel()。getColumn(“您想要的列”).getPreferredWidth();