Java 防止JXTable自动调整列宽
关于执行“打包所有列”调用后发生的情况,我在JXTable中遇到了一个特定的场景(甚至可能是JTable问题) “打包所有列”工作正常,但当我随后手动减小列宽时,在收到下一个TableModelEvent时,我修改的列宽总是变大。我注意到JTable的私有setWidthsFromPreferredWidths()最终被调用,这看起来像是罪魁祸首Java 防止JXTable自动调整列宽,java,jtable,swingx,tablecolumn,jxtable,Java,Jtable,Swingx,Tablecolumn,Jxtable,关于执行“打包所有列”调用后发生的情况,我在JXTable中遇到了一个特定的场景(甚至可能是JTable问题) “打包所有列”工作正常,但当我随后手动减小列宽时,在收到下一个TableModelEvent时,我修改的列宽总是变大。我注意到JTable的私有setWidthsFromPreferredWidths()最终被调用,这看起来像是罪魁祸首 同样,此问题仅在我选择“打包所有列”后发生。这是一个已知的错误还是“打包所有列”的预期行为?我在 它涉及重写columnMarginChanged(C
同样,此问题仅在我选择“打包所有列”后发生。这是一个已知的错误还是“打包所有列”的预期行为?我在 它涉及重写columnMarginChanged(ChangeEvent)方法以确保列的getWidth()和getPreferredWidth()同步:
@Override
public void columnMarginChanged(final ChangeEvent e)
{
super.columnMarginChanged(e);
if (isEditing())
{
removeEditor();
}
TableColumn resizingColumn = null;
if (tableHeader != null)
{
resizingColumn = tableHeader.getResizingColumn();
}
if (resizingColumn != null)
{
if (autoResizeMode == AUTO_RESIZE_OFF)
{
resizingColumn.setPreferredWidth(resizingColumn.getWidth());
}
else
{
SwingUtilities.invokeLater(new Runnable()
{
@Override
public void run()
{
doLayout();
repaint();
}
});
}
}
else
{
resizeAndRepaint();
}
}