Advertisement
Guest User

Untitled

a guest
Nov 27th, 2014
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.84 KB | None | 0 0
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import java.util.List;
  4. import java.util.Arrays;
  5. import javax.swing.*;
  6. import javax.swing.table.*;
  7.  
  8. public class TableHeaderHeightTest {
  9. private static int HEADER_HEIGHT = 32;
  10. private JTable makeTable() {
  11. JTable table = new JTable(new DefaultTableModel(2, 20));
  12. table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
  13. return table;
  14. }
  15. public JComponent makeUI() {
  16. JPanel p = new JPanel(new GridLayout(2,1));
  17.  
  18. JTable table1 = makeTable();
  19. //Bad: >>>>
  20. JTableHeader header = table1.getTableHeader();
  21. //Dimension d = header.getPreferredSize();
  22. //d.height = HEADER_HEIGHT;
  23. //header.setPreferredSize(d); //addColumn case test
  24. header.setPreferredSize(new Dimension(100, HEADER_HEIGHT));
  25. p.add(makeTitledPanel("Bad: JTableHeader#setPreferredSize(...)", new JScrollPane(table1)));
  26. //<<<<
  27.  
  28. JTable table2 = makeTable();
  29. JScrollPane scroll = new JScrollPane(table2);
  30. scroll.setColumnHeader(new JViewport() {
  31. @Override public Dimension getPreferredSize() {
  32. Dimension d = super.getPreferredSize();
  33. d.height = HEADER_HEIGHT;
  34. return d;
  35. }
  36. });
  37. // //or
  38. // table2.setTableHeader(new JTableHeader(table2.getColumnModel()) {
  39. // @Override public Dimension getPreferredSize() {
  40. // Dimension d = super.getPreferredSize();
  41. // d.height = HEADER_HEIGHT;
  42. // return d;
  43. // }
  44. // });
  45. p.add(makeTitledPanel("Override getPreferredSize()", scroll));
  46.  
  47. final List<JTable> list = Arrays.asList(table1, table2);
  48.  
  49. JPanel panel = new JPanel(new BorderLayout());
  50. panel.add(p);
  51. panel.add(new JButton(new AbstractAction("addColumn") {
  52. @Override public void actionPerformed(ActionEvent e) {
  53. for(JTable t: list) {
  54. t.getColumnModel().addColumn(new TableColumn());
  55. JTableHeader h = t.getTableHeader();
  56. Dimension d = h.getPreferredSize();
  57. System.out.println(d);
  58. }
  59. }
  60. }), BorderLayout.SOUTH);
  61. panel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
  62. return panel;
  63. }
  64. private static JComponent makeTitledPanel(String title, JComponent c) {
  65. JPanel p = new JPanel(new BorderLayout());
  66. p.add(c);
  67. p.setBorder(BorderFactory.createTitledBorder(title));
  68. return p;
  69. }
  70. public static void main(String[] args) {
  71. EventQueue.invokeLater(new Runnable() {
  72. @Override public void run() {
  73. createAndShowGUI();
  74. }
  75. });
  76. }
  77. public static void createAndShowGUI() {
  78. JFrame f = new JFrame();
  79. f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  80. f.getContentPane().add(new TableHeaderHeightTest().makeUI());
  81. f.setSize(320, 320);
  82. f.setLocationRelativeTo(null);
  83. f.setVisible(true);
  84. }
  85. }
  86.  
  87. tableHeader.setPreferredSize(new Dimension(10000, HEADER_HEIGHT));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement