final JTable table = new JTable(sorter);
table.setRowHeight(30);
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
scrollPane = new JScrollPane(table);
当数据的列比较多时,出现在横向滚动条,滚动滚动条时表头不刷新.也就是数据内容和表头不一致了,表头画的重叠了.
大侠们帮帮我
------解决方案--------------------
是不是要把tableHeader设置一下,
你看看swingHacker 中有没有介绍
------解决方案--------------------
------解决方案--------------------
这可能需要你编写一个方法来根据内容的列宽动态调整表头列宽了。
------解决方案--------------------
------解决方案--------------------
因为你设置的宽度不对
应该这样:
table.getTableHeader().setPreferredSize(new Dimension(table.getTableHeader().getPreferredSize().width,40));
就可以了
参考代码:
- Java code
import java.awt.BorderLayout;import java.awt.Container;import java.awt.Dimension;import javax.swing.JFrame;import javax.swing.JScrollPane;import javax.swing.JTable;import javax.swing.table.DefaultTableModel;import javax.swing.table.TableModel;public class TableInsertTest extends JFrame { private JTable table = new JTable(); public TableInsertTest() { TableModel dataModel = new DefaultTableModel() { public int getColumnCount() { return 10000; } public int getRowCount() { return 10; } @Override public Object getValueAt(int row, int column) { return row * column; } }; this.table = new JTable(dataModel); this.table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF); this.table.getTableHeader().setPreferredSize( new Dimension(this.table.getTableHeader().getPreferredSize().width, 30)); this.table.updateUI(); JScrollPane scrollpane = new JScrollPane(this.table); Container contentPane = this.getContentPane(); contentPane.setLayout(new BorderLayout()); contentPane.add(scrollpane, BorderLayout.CENTER); } /** * @param args */ public static void main(String[] args) { TableInsertTest frame = new TableInsertTest(); frame.setVisible(true); frame.setSize(300, 300); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }}