如题,当JTable的填充列比较窄时,JScrollPane有一块是空的,如何才能使JTable变宽充满JScrollPane呢?不要setSize 直接填充,这样JScrollPane一改变大小又完蛋了谢谢先!

解决方案 »

  1.   

    自己写个HeaderRenderer,继承DefaultTableCellRenderer,改写如下方法:
    public Component getTableCellRendererComponent(JTable table, Object value,
    boolean isSelected, boolean hasFocus, int row, int column) {

    JTableHeader header=table.getTableHeader();
    TableColumnModel model=header.getColumnModel();
    TableColumn col=model.getColumn(column);
    switch(column){
    case 0:
    col.setMaxWidth(100);
    break;
    case 1:
    col.setMaxWidth(200);
    break;
    .
                    .
                    .

    }
         .
         .
         .
    return this;
    }JTable.getTableHeader().setDefaultRenderer(上述自定义renderer的对象);
      

  2.   

    订制jtable
    public boolean getScrollableTracksViewportWidth() {
    if (autoResizeMode == AUTO_RESIZE_OFF) //
    if (this.getParent() instanceof JViewport) //
    return (((JViewport) getParent()).getWidth() > getPreferredSize().width); return true;
    }
      

  3.   

    你将JScrollPane的父容器布局设置为BorderLayout 
    BorderLayout会替你完成填充操作