Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p><img src="https://i.stack.imgur.com/vbDcD.png" alt="enter image description here"></p> <pre><code>import java.awt.*; import java.awt.event.*; import java.util.List; import java.util.Arrays; import javax.swing.*; import javax.swing.table.*; public class TableHeaderHeightTest { private static int HEADER_HEIGHT = 32; private JTable makeTable() { JTable table = new JTable(new DefaultTableModel(2, 20)); table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); return table; } public JComponent makeUI() { JPanel p = new JPanel(new GridLayout(2,1)); JTable table1 = makeTable(); //Bad: &gt;&gt;&gt;&gt; JTableHeader header = table1.getTableHeader(); //Dimension d = header.getPreferredSize(); //d.height = HEADER_HEIGHT; //header.setPreferredSize(d); //addColumn case test header.setPreferredSize(new Dimension(100, HEADER_HEIGHT)); p.add(makeTitledPanel("Bad: JTableHeader#setPreferredSize(...)", new JScrollPane(table1))); //&lt;&lt;&lt;&lt; JTable table2 = makeTable(); JScrollPane scroll = new JScrollPane(table2); scroll.setColumnHeader(new JViewport() { @Override public Dimension getPreferredSize() { Dimension d = super.getPreferredSize(); d.height = HEADER_HEIGHT; return d; } }); // //or // table2.setTableHeader(new JTableHeader(table2.getColumnModel()) { // @Override public Dimension getPreferredSize() { // Dimension d = super.getPreferredSize(); // d.height = HEADER_HEIGHT; // return d; // } // }); p.add(makeTitledPanel("Override getPreferredSize()", scroll)); final List&lt;JTable&gt; list = Arrays.asList(table1, table2); JPanel panel = new JPanel(new BorderLayout()); panel.add(p); panel.add(new JButton(new AbstractAction("addColumn") { @Override public void actionPerformed(ActionEvent e) { for(JTable t: list) { t.getColumnModel().addColumn(new TableColumn()); JTableHeader h = t.getTableHeader(); Dimension d = h.getPreferredSize(); System.out.println(d); } } }), BorderLayout.SOUTH); panel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); return panel; } private static JComponent makeTitledPanel(String title, JComponent c) { JPanel p = new JPanel(new BorderLayout()); p.add(c); p.setBorder(BorderFactory.createTitledBorder(title)); return p; } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { createAndShowGUI(); } }); } public static void createAndShowGUI() { JFrame f = new JFrame(); f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); f.getContentPane().add(new TableHeaderHeightTest().makeUI()); f.setSize(320, 320); f.setLocationRelativeTo(null); f.setVisible(true); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload