DefaultTableModel的问题 为什么我想把我的Resultset里面的东西依次放进一个Defaulttablemodel里面的时候,我先将当前这行数据放入一个vector里面,然后用addRow(),这个方法,传一个vector进去,为什么我每次放完一行后不能使用vector的clear方法,然后又将resultset的下一行数据放进去,然后将这行数据又放进defaulttablemodel里面? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你用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); }} 以后多用ArrayList吧,少用vector 为什么用大O表示的结果是O(nlogn)? java 前途 有关Zip流 歌德巴赫猜想 eclipse用什么插件可以实现拖拉组件并双击组件进行代码编辑? 帮忙看看这个程序怎么了?解决立即给分~~~~~~ 急急!!60分请问一下JPasswordField的个getpassword()怎么用数组实现 还有。。。 BBS的统计问题 求高手给出一个“Java Socket”满足下述两个条件的代码解决方案。 ArrayList与LinkedList LinkedList 中add 和 offer 的区别? jsp 中session保存多用户信息覆盖问题
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);
}
}