DefaultTableModel的问题

weiryou10 2012-06-07 09:06:49
为什么我想把我的Resultset里面的东西依次放进一个Defaulttablemodel里面的时候,我先将当前这行数据放入一个vector里面,然后用addRow(),这个方法,传一个vector进去,为什么我每次放完一行后不能使用vector的clear方法,然后又将resultset的下一行数据放进去,然后将这行数据又放进defaulttablemodel里面?
...全文
130 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
jlu_lamp_lamp 2012-06-08
  • 打赏
  • 举报
回复
以后多用ArrayList吧,少用vector
周靖峰 2012-06-08
  • 打赏
  • 举报
回复
你用addRow方法添加进去一个vector后,这一行的数据就由这个vector对象决定了,你修改这个vector对象的同时也在修改这一行的数据


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
import java.util.*;

public class TableTest
{
public static void main(String[] args)
{
final DefaultTableModel model = new DefaultTableModel(new String[] {"编号", "姓名"}, 0);
final Vector<String> vector = new Vector<String>();
vector.add("1");
vector.add("张三");
model.addRow(vector);
JTable table = new JTable(model);

JFrame frame = new JFrame();
frame.setLayout(new BorderLayout());
frame.add(new JScrollPane(table), BorderLayout.CENTER);
JButton button = new JButton("添加行");
frame.add(button, BorderLayout.SOUTH);
button.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
//修改vector会影响table中的数据
vector.clear();
vector.add("2");
vector.add("李四");
model.addRow(vector);
model.fireTableDataChanged(); //更新table数据
}
});

frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}


为了避免这种情况的发生,你添加过vector之后,需要再新建一个vector对象,就像这样


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.table.*;
import java.util.*;

public class TableTest
{
public static void main(String[] args)
{
final DefaultTableModel model = new DefaultTableModel(new String[] {"编号", "姓名"}, 0);
final Vector<String> vector = new Vector<String>();
vector.add("1");
vector.add("张三");
model.addRow(vector);
JTable table = new JTable(model);

JFrame frame = new JFrame();
frame.setLayout(new BorderLayout());
frame.add(new JScrollPane(table), BorderLayout.CENTER);
JButton button = new JButton("添加行");
frame.add(button, BorderLayout.SOUTH);
button.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
//新建一个vector就行了
Vector<String> vector = new Vector<String>();
vector.add("2");
vector.add("李四");
model.addRow(vector);
model.fireTableDataChanged(); //更新table数据
}
});

frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧