# HG changeset patch # User Omair Majid # Date 1361898252 18000 # Node ID 0e3c1efc6c15b1ce88a48409298a072f76633498 # Parent 81508fc5f27baf7d866388666e470ffe3d8a91a0 Better widths for the network interface table Reviewed-by: neugens Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2013-February/005855.html PR 1310 diff -r 81508fc5f27b -r 0e3c1efc6c15 host-overview/client-swing/src/main/java/com/redhat/thermostat/host/overview/client/swing/internal/HostOverviewPanel.java --- a/host-overview/client-swing/src/main/java/com/redhat/thermostat/host/overview/client/swing/internal/HostOverviewPanel.java Tue Feb 26 10:56:45 2013 -0500 +++ b/host-overview/client-swing/src/main/java/com/redhat/thermostat/host/overview/client/swing/internal/HostOverviewPanel.java Tue Feb 26 12:04:12 2013 -0500 @@ -48,6 +48,8 @@ import javax.swing.SwingUtilities; import javax.swing.table.DefaultTableModel; import javax.swing.table.JTableHeader; +import javax.swing.table.TableCellRenderer; +import javax.swing.table.TableColumnModel; import com.redhat.thermostat.client.swing.ComponentVisibleListener; import com.redhat.thermostat.client.swing.SwingComponent; @@ -83,6 +85,8 @@ private Object[] networkTableColumns; private Object[][] networkTableData; + private JTable networkTable; + public HostOverviewPanel() { super(); initializePanel(); @@ -188,6 +192,25 @@ @Override public void run() { networkTableModel.setDataVector(networkTableData, networkTableColumns); + + /* + * Compute and set initial (minimum) widths for the table. The + * LayoutManager will give it extra space because the table is + * narrower than what it has to be and that space is distributed + * among all the columns as extra. + */ + TableColumnModel columnModel = networkTable.getColumnModel(); + for (int col = 0; col < networkTable.getColumnCount(); col++) { + int maxWidth = Integer.MIN_VALUE; + + for (int row = 0; row < networkTable.getRowCount(); row++) { + TableCellRenderer renderer = networkTable.getCellRenderer(row, col); + Component component = networkTable.prepareRenderer(renderer, row, col); + maxWidth = Math.max(maxWidth, component.getPreferredSize().width); + } + + columnModel.getColumn(col).setPreferredWidth(maxWidth); + } } }); } @@ -302,7 +325,7 @@ panel.setLayout(new BorderLayout(0, 0)); - JTable networkTable = new JTable(networkTableModel); + networkTable = new JTable(networkTableModel); panel.add(networkTable); JTableHeader header = networkTable.getTableHeader(); panel.add(header, BorderLayout.PAGE_START);