实时jTable列调整大小

时间:2014-05-11 08:57:40

标签: java swing jtable tablecellrenderer jtableheader

我正在开发一个项目,我将mysql中的列名添加到jTable中。 我希望在添加名称时,列应根据列名的长度调整其大小。我会让自己更清楚,但首先是现有的代码:

jTextArea1.setText(null);
tableModel.setColumnCount(0);
colwidth = 0;
try {
    Class.forName("java.sql.DriverManager");
    con = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:" + GlobalParams.portvar + "/" + (String) jList1.getSelectedValue(), "" + GlobalParams.uservar, "" + GlobalParams.passvar);
    Statement stmnt = (Statement) con.createStatement();
    String query1 = "Use " + GlobalParams.dbvar;
    stmnt.executeQuery(query1);
    String query2 = "desc " + (String) jList2.getSelectedValue();
    ResultSet rs = stmnt.executeQuery(query2);
    while (rs.next()) {
        fieldo = rs.getString("Field");
        jTextArea1.append(fieldo + "\n");
    }
    Scanner scanner = new Scanner(jTextArea1.getText());
    timeget();
    jTextArea4.append(now + ":   " + "/ Scanning Available feeds from table '" + (String) jList2.getSelectedValue() + "' / \n");
    timeget();
    jTextArea4.append(now + ":   " + "/ Getting feeds from table '" + (String) jList2.getSelectedValue() + "' / \n \n");
    if (scanner.hasNextLine()) {
        scanner.nextLine();
        while (scanner.hasNextLine()) {
            String line = scanner.nextLine();
            tableModel.addColumn(line);
            jTable1.getColumnModel().getColumn(colwidth).setWidth(line.length());
            colwidth++;
            int end = jTextArea1.getLineEndOffset(0);
            jTextArea1.replaceRange("", 0, end);
        }
    }
} catch (Exception e) {
    JOptionPane.showMessageDialog(this, e.getMessage());
}

"列表ColWidth"是一个公共静态int和" fieldo"是一个公共静态字符串。

我想要的是,对于前.->要制作成列的字符串是" asdadsasd123"。我希望列应根据此字符串的长度调整其宽度。 我已将表的自动调整大小设置为关闭。 桌子放在一个scollpane中。框架的布局是自由设计。

我也找到了这里的主题 - > Auto resizing the JTable column widths 但我似乎无法理解这段代码:

    TableCellRenderer renderer = table.getCellRenderer(row, column);
    Component comp = table.prepareRenderer(renderer, row, column);
    width = Math.max(comp.getPreferredSize().width, width);

(是的,我对java非常有经验)。 而且我现在也不想对行做任何事情,只需调整列的大小。

以下是Default->的屏幕截图 enter image description here

以下是我希望它如何 - > enter image description here

请帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用Table Column Adjuster

它将根据单元格数据或两者的标题大小调整列宽。