jtable的问题,数据不刷新 ,急急! tableModel需要添加TableModelListener 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 可否说的详细点。有没有具体解决方法。谢谢tableModel需要添加TableModelListener??public void tableChanged(TableModelEvent e) { super.tableChanged(e); repaint();不是有事件吗 我就是把向量重新赋值 private void testvect()(String ssql){ vect=new Vector() ;//初始化向量对象 vect.removeAllElements(); rowid_vector=new Vector(); group1=new ButtonGroup(); ...... // 得到数据库行数 recrow; if (recrow<=1){ Vector rec_vector=new Vector(); for(int j=0;j<strColumnName.length;j++){ rec_vector.addElement(null); } vect.addElement(rec_vector); rowid_vector.addElement(null); iselrow=-1; System.out.println("iselrow"+iselrow); return; } for(int i=1;i<recrow;i++){ Vector rec_vector=new Vector(); for(int j=0;j<strColumnName.length;j++){ if(j==0){ JButton tempRadioButton= new JButton (); if (i==1){ tempRadioButton.setSelected(true); rec_vector.addElement(tempRadioButton); group1.add(tempRadioButton); }else{ rec_vector.addElement(tempRadioButton); group1.add(tempRadioButton); } }else{ rec_vector.addElement(数据库值); } if (i==1){ name_vector.addElement(strColumnName[j]); } } vect.addElement(rec_vector); rowid_vector.addElement(rs.getCell(0,i).toString()); iselrow=0; // System.out.println("iselrow"+iselrow); } } 对不起 是JRadioButton 不是JButton 看来你是对Swing一点也不懂,这样也可以上手做东西了,真是佩服佩服。Swing是基于MVC模式驱动的,TableModel数据改变了,需要触发消息告诉JTable的。不过JTable不需要在加TableModelListener监听器了,因为JTable已经监听TableModel的TableModelListener事件了。你在更改你的TableModel的时候只要触发一个事件就可以了。每次变化时候调用下面这个方法吧。/** * 当 TableModel 的数据发生变化的时候调用这个方法 * 它会根据参数<code>oldCount</code>和<code>newCount</code> * 调用相应的 * fireTableRowsUpdated * fireTableRowsInserted * fireTableRowsDeleted * * 如果是TableModel的 Structure发生了变化,这个方法不起作用 * */ public void fireTableRowsChanged(int oldCount, int newCount) { if (newCount == 0 && oldCount == 0) { return; } else if (newCount == 0 && oldCount > 0) { this.fireTableRowsDeleted(0, oldCount - 1); } else if (newCount > 0 && oldCount == 0) { this.fireTableRowsInserted(0, newCount - 1); } else if (newCount == oldCount) { this.fireTableRowsUpdated(0, newCount - 1); } else if (newCount > oldCount) { this.fireTableRowsInserted(oldCount, newCount - 1); this.fireTableRowsUpdated(0, oldCount - 1); } else { this.fireTableRowsDeleted(newCount, oldCount - 1); this.fireTableRowsUpdated(0, newCount - 1); } } public int getRowCount() { int intSize = vect.size(); return intSize;定义数据模型为什麽上述方法会出错楼上的方法我老早就用过了。报错 我的getRowCount()都没定义,哪能用DefaultModel里的方法呢? 我觉得你的问题可能是:private void testvect()(String ssql){ vect=new Vector() ;//初始化向量对象这里不需要再次初始化了,直接用全局的变量(初始的),你只要把元素重新替换就行了public int getRowCount() {出错的原因可能是:你的数据vect和test_vector不知道是什么关系,是不是直接return test_vector.size();就可以了?--以上仅供参考-- 我觉得你可以去看下jdk中的一个例子,详细的说明了数据库表的使用。在D:\JBuilder7\jdk1.3.1\DEMO\JFC\TableExample下。 public int getRowCount() {出错的原因可能是:你的数据vect和test_vector不知道是什么关系,是不是直接return test_vector.size();就可以了?test_vect我是用来测试的,我就不明白return vect.size()那出错了 初学者的提问 JTable中的JComboBox的问题 JDK常用的几个类是哪一些? 急问!? String a=new String("foo");一共产生了几个对象?为什么??谢谢! [求助]关于Choice类的区分 请问tomcat启动的时候会运行哪些用户编写的程序? 对象的存取 好心人看一下为什么编译过不了那?给分的 怪!!!有关jComboBox控件的显示问题!!!100分 JTree用加减号来展开和收缩子节点,如何实现? 关于addActionListener
有没有具体解决方法。谢谢
tableModel需要添加TableModelListener??
public void tableChanged(TableModelEvent e) {
super.tableChanged(e);
repaint();
不是有事件吗
private void testvect()(String ssql){
vect=new Vector() ;//初始化向量对象
vect.removeAllElements();
rowid_vector=new Vector();
group1=new ButtonGroup();
......
// 得到数据库行数 recrow; if (recrow<=1){
Vector rec_vector=new Vector(); for(int j=0;j<strColumnName.length;j++){
rec_vector.addElement(null);
} vect.addElement(rec_vector);
rowid_vector.addElement(null);
iselrow=-1;
System.out.println("iselrow"+iselrow);
return;
} for(int i=1;i<recrow;i++){
Vector rec_vector=new Vector();
for(int j=0;j<strColumnName.length;j++){
if(j==0){
JButton tempRadioButton= new JButton ();
if (i==1){
tempRadioButton.setSelected(true);
rec_vector.addElement(tempRadioButton);
group1.add(tempRadioButton);
}else{
rec_vector.addElement(tempRadioButton);
group1.add(tempRadioButton);
}
}else{
rec_vector.addElement(数据库值);
} if (i==1){
name_vector.addElement(strColumnName[j]);
} } vect.addElement(rec_vector);
rowid_vector.addElement(rs.getCell(0,i).toString());
iselrow=0;
// System.out.println("iselrow"+iselrow); }
}
Swing是基于MVC模式驱动的,TableModel数据改变了,需要触发消息告诉JTable的。
不过JTable不需要在加TableModelListener监听器了,因为JTable已经监听TableModel的TableModelListener事件了。你在更改你的TableModel的时候只要触发一个事件就可以了。
每次变化时候调用下面这个方法吧。/**
* 当 TableModel 的数据发生变化的时候调用这个方法
* 它会根据参数<code>oldCount</code>和<code>newCount</code>
* 调用相应的
* fireTableRowsUpdated
* fireTableRowsInserted
* fireTableRowsDeleted
*
* 如果是TableModel的 Structure发生了变化,这个方法不起作用
* */
public void fireTableRowsChanged(int oldCount, int newCount)
{
if (newCount == 0 && oldCount == 0)
{
return;
}
else if (newCount == 0 && oldCount > 0)
{
this.fireTableRowsDeleted(0, oldCount - 1);
}
else if (newCount > 0 && oldCount == 0)
{
this.fireTableRowsInserted(0, newCount - 1);
}
else if (newCount == oldCount)
{
this.fireTableRowsUpdated(0, newCount - 1);
}
else if (newCount > oldCount)
{
this.fireTableRowsInserted(oldCount, newCount - 1);
this.fireTableRowsUpdated(0, oldCount - 1);
}
else
{
this.fireTableRowsDeleted(newCount, oldCount - 1);
this.fireTableRowsUpdated(0, newCount - 1);
}
}
int intSize = vect.size();
return intSize;
定义数据模型为什麽上述方法会出错
楼上的方法我老早就用过了。
报错
我的getRowCount()都没定义,哪能用DefaultModel里的方法呢?
private void testvect()(String ssql){
vect=new Vector() ;//初始化向量对象
这里不需要再次初始化了,直接用全局的变量(初始的),
你只要把元素重新替换就行了public int getRowCount() {
出错的原因可能是:
你的数据vect和test_vector不知道是什么关系,
是不是直接return test_vector.size();就可以了?--以上仅供参考--
出错的原因可能是:
你的数据vect和test_vector不知道是什么关系,
是不是直接return test_vector.size();就可以了?
test_vect我是用来测试的,我就不明白return vect.size()那出错了