刚开始的程序应该是对的。检查一下源代码吧。另附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; }
};如果还不行,把出错信息贴上来吧
ListModel bigData = new AbstractListModel() {
public int getSize() { return Short.MAX_VALUE; }
public Object getElementAt(int index) { return "Index " index; }
};如果还不行,把出错信息贴上来吧
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的值??
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
写错了你最好写个类继承AbstractListModel,自己定义一个构造函数,里面的数据用Vector来实现。
这就是错误所在哦。
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);
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;
};
大家都把错误和解决方法都给出来了
其中 tripofdream(梦之旅) 的方法运行通过了结贴!