刚开始的程序应该是对的。检查一下源代码吧。另附JDK帮助中的范例代码:(编译通过)// This list model has about 2^16 elements.  Enjoy scrolling. 
 ListModel bigData = new AbstractListModel() {
     public int getSize() { return Short.MAX_VALUE; }
     public Object getElementAt(int index) { return "Index "  index; }
 };如果还不行,把出错信息贴上来吧

解决方案 »

  1.   

    原代码如下:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import javax.swing.table.*;
    /**
     * @version 1.0 11/09/98
     *
     */
     
     ListModel lm = new AbstractListModel{  //第十五行
     
          String headers[] ;
          AbstractListModel(int j){
           for(int i;i<j;i++) headers[i]=""+i;
           };
          public int getSize() { return headers.length; }
          public Object getElementAt(int index) {
            return headers[index];
          }
        }
     
    class RowHeaderRenderer extends JLabel implements ListCellRenderer {
      
      RowHeaderRenderer(JTable table) {
        JTableHeader header = table.getTableHeader();
        setOpaque(true);
        setBorder(UIManager.getBorder("TableHeader.cellBorder"));
        setHorizontalAlignment(CENTER);
        setForeground(header.getForeground());
        setBackground(header.getBackground());
        setFont(header.getFont());
      }
      
      public Component getListCellRendererComponent( JList list, 
             Object value, int index, boolean isSelected, boolean cellHasFocus) {
        setText((value == null) ? "" : value.toString());
        return this;
      }
    }public class RowHeaderExample extends JFrame {  public RowHeaderExample() {
        super( "Row Header Example" );
        setSize( 300, 150 );
            
        int j=10;
        ListModel lm=new AbstractListModel(j); //第五十三行    DefaultTableModel dm = new DefaultTableModel(30*lm.getSize(),40);
        JTable table = new JTable( dm );
        table.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        
        
        JList rowHeader = new JList(lm);    
        rowHeader.setFixedCellWidth(50);
        
        rowHeader.setFixedCellHeight(3*table.getRowHeight()
                                   + table.getRowMargin()-1);
    //                             + table.getIntercellSpacing().height);
        rowHeader.setCellRenderer(new RowHeaderRenderer(table));    JScrollPane scroll = new JScrollPane( table );
        scroll.setRowHeaderView(rowHeader);
        getContentPane().add(scroll, BorderLayout.CENTER);
      }  public static void main(String[] args) {
        RowHeaderExample frame = new RowHeaderExample();
        frame.addWindowListener( new WindowAdapter() {
          public void windowClosing( WindowEvent e ) {
    System.exit(0);
          }
        });
        frame.setVisible(true);
      }
    }错误信息:
    E:\jvcx\RowHeaderExample.java:15: 'class' or 'interface' expected
     ListModel lm = new AbstractListModel{
     ^
    E:\jvcx\RowHeaderExample.java:53: javax.swing.AbstractListModel is abstract; cannot be instantiated
        ListModel lm=new AbstractListModel(j);
     
    怎样才能动态改变headers的值??
      

  2.   

    line 15 defines an anonymous class extends AbstractListModelListModel lm = new ListModel lm = new AbstractListModel(){....}
    line 53 AbstractListModel is abstract, cannot be instantiatedSolution:class ListModel extends AbstractListModel{  //第十五行
     
          String headers[] ;
          AbstractListModel(int j){
                      headers=new String[j]; 
           for(int i=0;i<j;i++) headers[i]=""+i;
           };
          public int getSize() { return headers.length; }
          public Object getElementAt(int index) {
            return headers[index];
          }
        }
    .....
    ListModel lm=new ListModel(j);// line 53
      

  3.   

    要对headers动态赋值,用数组不行的,数组只能定长。你可以用Vector。ListModel lm = new AbstractListModel{  //第十五行
    写错了你最好写个类继承AbstractListModel,自己定义一个构造函数,里面的数据用Vector来实现。
      

  4.   

    AbstractListModel你的成员类继承它,并实现,他是个abstract类!
      

  5.   

    javax.swing.AbstractListModel is abstract; cannot be instantiated=======================
    这就是错误所在哦。
      

  6.   

    class YourListModel extends AbstractListModel{
                 String[] headers;                 YourListModel(int j){
                     headers = new String[j];
                     for(int i=0;i<j;i++) 
                         headers[i]=i+"";
                 }             public int getSize() { return headers.length; }
                 public Object getElementAt(int index) {
                     return headers[index];
                 }
    }
    然后:
           ListModel lm=new YourListModel(j);
      

  7.   

    你不要用数组啦,现在提倡用ArrayList,他是变长的,可以动态改变,另外抽象类当然不能被实例化,你可以派生一个类
      

  8.   

    ListModel lm = new AbstractListModel{  //第十五行
     
          String headers[] ;
          AbstractListModel(int j){
           for(int i;i<j;i++) headers[i]=""+i;
           };
    匿名内部类能这样写吗?应该是这样的吧:
     ListModel lm = new AbstractListModel(){  //第十五行
     
          String headers[] ;
          AbstractListModel(int j){
           for(int i;i<j;i++) headers[i]=""+i;
           };
      

  9.   

    呵呵,真的很感谢大家,问题解决了,也知道错误的原因所在.
    大家都把错误和解决方法都给出来了
    其中 tripofdream(梦之旅) 的方法运行通过了结贴!