我需要为JTable的几列分配固定宽度,然后为所有其他列分配相等的宽度.
假设JTable有5列.第一列的宽度应为100,第二列的宽度应为150.如果在设置两列的宽度后JTable的剩余宽度为600,我想在其他三列之间均匀分割.
问题是table.getParent().getSize().width通常是0,即使它被添加到JFrame并且可见,所以我不能用它作为基础.
我该怎么做呢?
解决方法
public MyJFrame() { initComponents(); resizeColumns(); addComponentListener(new ComponentAdapter() { @Override public void componentResized(ComponentEvent e) { resizeColumns(); } }); } //SUMS 100% float[] columnWidthPercentage = {20.0f,55.0f,10.0f,5.0f,5.0f}; private void resizeColumns() { int tW = jTable1.getWidth(); TableColumn column; TableColumnModel jTableColumnModel = jTable1.getColumnModel(); int cantCols = jTableColumnModel.getColumnCount(); for (int i = 0; i < cantCols; i++) { column = jTableColumnModel.getColumn(i); int pWidth = Math.round(columnWidthPercentage[i] * tW); column.setPreferredWidth(pWidth); } }