Java jTable列未调整大小以适应应用程序开始时的内容
基于 我创建了一个显示表格(jTable)的JFrame应用程序 调用initComponents()后,将从文件中自动填充数据。 它只是一个只显示的应用程序 当应用程序启动时,它以默认宽度显示包含数据的列 当我双击任何单元格,然后单击任何其他单元格时,列的大小会按预期调整 我希望应用程序在启动时显示调整大小以适应内容的列 请帮忙 我的班级代码部分如下:Java jTable列未调整大小以适应应用程序开始时的内容,java,swing,jtable,Java,Swing,Jtable,基于 我创建了一个显示表格(jTable)的JFrame应用程序 调用initComponents()后,将从文件中自动填充数据。 它只是一个只显示的应用程序 当应用程序启动时,它以默认宽度显示包含数据的列 当我双击任何单元格,然后单击任何其他单元格时,列的大小会按预期调整 我希望应用程序在启动时显示调整大小以适应内容的列 请帮忙 我的班级代码部分如下: public callA() { setExtendedState(JFrame.MAXIMIZED_BOTH);
public callA() {
setExtendedState(JFrame.MAXIMIZED_BOTH);
initComponents();
readConnectionsXML();
}
jTable声明:
jTable_ConnectionsDetails.setAutoCreateRowSorter(true);
jTable_ConnectionsDetails.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"Connection Name", "Conn Type", "Host", "Port", "Service Name", "User", "profilename", "Password", "desc"
}
) {
Class[] types = new Class [] {
java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class
};
public Class getColumnClass(int columnIndex) {
return types [columnIndex];
}
});
jTable_ConnectionsDetails.setCellSelectionEnabled(true);
jTable_ConnectionsDetails.getModel().addTableModelListener(new TableModelListener() {
public void tableChanged(TableModelEvent e) {
ColumnsAutoSizer.sizeColumnsToFit(jTable_ConnectionsDetails);
}
});
jScrollPane_ConnectionsDataTable.setViewportView(jTable_ConnectionsDetails);
好的,每次更改数据时,您都会自动调整列的大小
当我双击任何单元格,然后单击任何其他单元格时,列的大小会按预期调整
每次编辑单元格时,都会保存值并生成TableModelEvent,以执行上述代码
调用initComponents()后,将从文件中自动填充数据
那么,您是否验证执行了上面的侦听器代码
如果未执行,则需要手动调用ColumnsAutoResizer
方法
如果它被执行,那么它可能是一个时间问题,因为GUI还不可见。尝试将代码包装在
SwingUtilities.invokeLater(…)
中,以便将代码添加到事件调度线程(EDT)的末尾,并在GUI可见后执行。我将数据添加为-ConnectionTablemodel.addRow(新对象[]{Reference\u Element.getAttribute(“名称”)、cElement_数据库类型、cElement_主机、cElement_端口、cElement_数据库名称、cElement_用户、cElement_密码、cElement_密码、cElement_连接URL})
要更快地获得更好的帮助,请将或作为问题的答案发布。
jTable_ConnectionsDetails.getModel().addTableModelListener(new TableModelListener() {
public void tableChanged(TableModelEvent e) {
ColumnsAutoSizer.sizeColumnsToFit(jTable_ConnectionsDetails);