import javax.swing.*;
import javax.swing.table.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;class Model extends AbstractTableModel{
String[] columnNames= {"itemset","support"};
Object data[][];
struct aStruct = new struct();
public Model(Vector vector)  // 创建表模型 vector是数据源
{

for(int i=0;i<vector.size();i++)
{
aStruct = (struct)vector.elementAt(i);
data[i][0] = aStruct.getItem();
}
for(int i=0;i<vector.size();i++)
{
aStruct = (struct)vector.elementAt(i);
data[i][1] = aStruct.getSup();
} }

public String getColumnName(int index)
{
return columnNames[index];
}
public int getRowCount()
{
return data.length;
}
public int getColumnCount()
{
return data[0].length;
}
public Object getValueAt(int row,int col)
{
return data[row][col];
}
}public class Frame2 extends JFrame {
public Frame2(Vector vec)  
{
super("生成频繁项过程");
Model model = new Model(vec);
JTable  table = new JTable(model);
JButton NextButton = new JButton("next");
this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add(new JScrollPane(table),BorderLayout.CENTER);
this.getContentPane().add(NextButton,BorderLayout.SOUTH);
this.pack();
this.setSize(400,400);
this.setVisible(true);
}
public Frame2()  // 用来测试
{
super();
Vector test = new Vector();
struct a = new struct();
a.setItem("a");
a.setSup(1);
test.add(a);
new Frame2(test);
}
public static void main(String args[]){
new Frame2();
}
}
错误:
Exception in thread "main" java.lang.NullPointerException
        at Model.<init>(Frame2.java:20)
        at Frame2.<init>(Frame2.java:52)
        at Frame2.<init>(Frame2.java:70)
        at Frame2.main(Frame2.java:73)
Press any key to continue...
请问哪里有错怎么改

解决方案 »

  1.   

    struct是什么啊?
    NullPointException应该是初始化出问题
      

  2.   

    struct :
    public class struct{
    public int  support;
    public String  item;
    public struct()
    {
    support= 0;
    item   = "";
    }

    public int getSup()
    {
    return support;
    }
    public String getItem()
    {
    return item;
    }
    public void setSup(int support)
    {
    this.support=support;
    }
    public void setItem(String item)
    {
    this.item=item;
    }
    public void increaseSup()
    {
    support++;
    }
    }能说的清楚点吗?20行初始化有问题?
      

  3.   

    是不是应该用动态数组 来 替代Object[][] data数组啊?
      

  4.   

    我把Object[][] data={
       {null,null},
       {null,null},
            .
            .
            .
       {null,null},
    };
    共十个可以显示,但有9行是空的
    有没有办法可以实现显示的时候 有几行有效的数据就显示几行?
      

  5.   

    1. data要初始化
    2. data[i][1] = aStruct.getSup(); //类型不对吧其它没仔细看,你可以调试一下
      

  6.   

    data = new Object[vector.size()][2];