我正在开发一个项目,我将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->的屏幕截图
以下是我希望它如何 - >
请帮助,谢谢。