1. 程式人生 > >把JTable的表頭也就是標題行給隱藏掉

把JTable的表頭也就是標題行給隱藏掉

主要有以下三種方法:

1. 不放在 JScrollPane 上, 但是需要給表加個邊框.

[java] view plain copy print?
  1. table.setBorder(BorderFactory.createEtchedBorder());  
  2. panel.add(table);  
table.setBorder(BorderFactory.createEtchedBorder());

panel.add(table);
 

2. 放在 JScrollPane 上, 但是把表頭隱藏..

[java] view plain copy print?
  1. table.getTableHeader().setVisible(
    false);  
  2. tableScrollPane.setViewportView(table);  
  3. panel.add(tableScrollPane);  
table.getTableHeader().setVisible(false);

tableScrollPane.setViewportView(table);
panel.add(tableScrollPane);

缺點: 在本來表頭的位置出現一片空白, 難看. 改進: 如果在前面將表頭內容全部設為 "", 就可以去掉這片空白, 效果和 3 一樣.(http://www.my400800.cn)

[java] view plain
copy
print?
  1. tableHeader = new String[]{"""""""""""""",""};  
  2. table = new JTable(tableData, tableHeader);  
  3. table.getTableHeader().setVisible(false);  
  4. tableScrollPane.setViewportView(table);  
  5. panel.add(tableScrollPane);  
tableHeader = new String[]{"", "", "", "", "", "", "",""};
table = new JTable(tableData, tableHeader);
table.getTableHeader().setVisible(false);

tableScrollPane.setViewportView(table);
panel.add(tableScrollPane);
 

3. 為表頭設定一個 CellRenderer, 這個 CellRenderer 的預選高度為 0. .

[java] view plain copy print?
  1. jtb_right_dataList.getTableHeader().setVisible(false);  
  2.             DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();  
  3.             renderer.setPreferredSize(new Dimension(00));  
  4.             jtb_right_dataList.getTableHeader().setDefaultRenderer(renderer);  
         
jtb_right_dataList.getTableHeader().setVisible(false);
            DefaultTableCellRenderer renderer = new DefaultTableCellRenderer();
            renderer.setPreferredSize(new Dimension(0, 0));
            jtb_right_dataList.getTableHeader().setDefaultRenderer(renderer);
 

這是目前我正在用的, 正是我想要的效果.