Mercurial > hg > release > thermostat-0.6
changeset 1003:0e3c1efc6c15
Better widths for the network interface table
Reviewed-by: neugens
Review-thread: http://icedtea.classpath.org/pipermail/thermostat/2013-February/005855.html
PR 1310
author | Omair Majid <omajid@redhat.com> |
---|---|
date | Tue, 26 Feb 2013 12:04:12 -0500 |
parents | 81508fc5f27b |
children | b0879f47909f |
files | host-overview/client-swing/src/main/java/com/redhat/thermostat/host/overview/client/swing/internal/HostOverviewPanel.java |
diffstat | 1 files changed, 24 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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);