Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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: >>>>
- 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)));
- //<<<<
- 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<JTable> 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);
- }
- }
- tableHeader.setPreferredSize(new Dimension(10000, HEADER_HEIGHT));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement