final JTable table = new JTable(sorter);

table.setRowHeight(30);
         
table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
scrollPane = new JScrollPane(table);
当数据的列比较多时,出现在横向滚动条,滚动滚动条时表头不刷新.也就是数据内容和表头不一致了,表头画的重叠了.
大侠们帮帮我

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【wuheng66888】截止到2008-06-27 15:06:39的历史汇总数据(不包括此帖):
    发帖数:24                 发帖分:1700               
    结贴数:23                 结贴分:1580               
    未结数:1                  未结分:120                
    结贴率:95.83 %            结分率:92.94 %            
    值得尊敬
      

  2.   

    是不是要把tableHeader设置一下,
    你看看swingHacker 中有没有介绍
      

  3.   

    代码很多呀.就是当table很大时,jscrollpane就会出现横向滚动条.移动横向滚动条,表头就有问题呀
      

  4.   

    没有越界了.只是表格大了,JScrollPane就自动出现横向滚动条了
      

  5.   

    我table加了绘制器后就会出现问题.估计是滚动条滚动的时候没有刷新表头的绘制器
      table.getTableHeader().setDefaultRenderer(allrender);
      

  6.   

    问题找到了.
    //设置table表头的高度 //加上下面这一句的话当JScrollPane出现滚动条时,滚动滚动条表头会出现不刷新的情况
    //  table.getTableHeader().setPreferredSize(new Dimension(0,40));
      

  7.   

    楼上就别打广告了  烦人  很多帖子里都有你 --abc89757  奥运
      

  8.   

    因为你设置的宽度不对
    应该这样:
    table.getTableHeader().setPreferredSize(new Dimension(table.getTableHeader().getPreferredSize().width,40));
    就可以了
    参考代码: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);
        }
    }
      

  9.   

    我也遇上了楼主的问题,解决方法灰常简单:dataTable.getTableHeader().setPreferredSize(new Dimension(10000,headHeight));把表头的宽度设为一个很大的数就可以了。我用了15楼的方法还是不管用,用我的方法是好的。