我知道如何填充jtable,我准备了上面的代码,工作正常。但问题是它在另一个项目中工作,但在我当前的项目中使用bot。这两个项目的代码都是一样的。这是代码... purchaswtab是已经使用swing调色板创建的表名。并且在Item Master的退出按钮的情况下执行此功能。 数组ap的数组元素定义为我必须从结果集中的给定位置获取它们。
public void populatetable(ItemMaster imm)
{
imm.dispose();
String t[][]=new String [30][10];
int[] ap={19,1,2,4,18,16,17};
Object[] h1=new Object[7];
String a1,a2;
int j=0,i=1;
int len=0;
try
{
st=fun.connect1();
String query="select * from Temp_Purchase";
ResultSet rs=st.executeQuery(query);
ResultSetMetaData rsmd=rs.getMetaData();
while(rs.next())
{
int k=0;
for(i=1;i<=7;i++,k++ )
{
t[j][i-1]=rs.getString(ap[k]);
System.out.println(t[j][i-1]);
}
j++;
len++;
}
fun.close();
}
catch(Exception e)
{
fun.close();
System.out.println("Exception:"+e);
}
DefaultTableModel de=(DefaultTableModel)purchaseTab.getModel();
purchaseTab=new JTable(de);
//Code for filling data into table
for(i=0;i<len;i++)
{
for(j=1;j<=7;j++)
{
h1[j-1]=t[i][j-1];
}
if(h1[0]=="0")
{
h1[0]=Boolean.FALSE;
}
de.insertRow(i,h1);
}
//jsp.setViewportView(Table);
}
答案 0 :(得分:2)
将while(rs.next())
内的evetything替换为de.addRow(new Object[..., ..., ...]);
您必须将DefaultTableModel de
声明为局部变量,在调用fun
之前初始化
然后将DefaultTableModel de
传递给JTable
,例如myTable(de);
或myTable.setModel(de)
使用Object[]
代替String[]
的限制,然后您可以store various data type in DefaultTableModel
答案 1 :(得分:0)
来自@ mKorbel的回答
创建并添加DefaultTableModel,如:
DefaultTableModel model=new DefaultTableModel(data,header);
JTable table = new JTable(model);
这里的数据是双向量,标题是单向量。
data = get(field);
Object[] d={data.get(i).get(0),data.get(i).get(1),data.get(i).get(2)};
model.addRow(d);
从数据库中获取数据
get(field){
//Your Database connection
//Get data into vector
//return vector
}