JTABLE插入数据,更新数据问题

sujiewen 2009-08-22 11:58:48
我要JTABLE去重,发现更新数据的出现问题。错误提示
Exception in thread "Thread-8" java.lang.NullPointerException
at javax.swing.LookAndFeel.installProperty(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.installDefaults(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.installUI(Unknown Source)
at javax.swing.JComponent.setUI(Unknown Source)
at javax.swing.JTable.setUI(Unknown Source)
at javax.swing.JTable.updateUI(Unknown Source)
at db.DbFrame.InitSjwTableData(DbFrame.java:487)
at db.SearchRepAction$SearchRepThread.run(SearchRepAction.java:64)
Exception in thread "Thread-10" 1
1
1
Exception in thread "Thread-9" java.lang.NullPointerException
at java.awt.Container.remove(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.uninstallUI(Unknown Source)
at javax.swing.JComponent.setUI(Unknown Source)
at javax.swing.JTable.setUI(Unknown Source)
at javax.swing.JTable.updateUI(Unknown Source)
at db.DbFrame.InitSjwTableData(DbFrame.java:487)
at db.SearchRepAction$SearchRepThread.run(SearchRepAction.java:64)
java.lang.NullPointerException
at javax.swing.LookAndFeel.installProperty(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.installDefaults(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.installUI(Unknown Source)
at javax.swing.JComponent.setUI(Unknown Source)
at javax.swing.JTable.setUI(Unknown Source)
at javax.swing.JTable.updateUI(Unknown Source)
at db.DbFrame.InitSjwTableData(DbFrame.java:487)
at db.SearchRepAction$SearchRepThread.run(SearchRepAction.java:64)
1
1
1
1
1
1
Exception in thread "Thread-17" java.lang.NullPointerException
at javax.swing.LookAndFeel.installProperty(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.installDefaults(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.installUI(Unknown Source)
at javax.swing.JComponent.setUI(Unknown Source)
at javax.swing.JTable.setUI(Unknown Source)
at javax.swing.JTable.updateUI(Unknown Source)
at db.DbFrame.InitSjwTableData(DbFrame.java:487)
at db.SearchRepAction$SearchRepThread.run(SearchRepAction.java:64)
1
1
Exception in thread "Thread-21" java.lang.NullPointerException
at javax.swing.plaf.basic.BasicTableUI.installListeners(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.installUI(Unknown Source)
at javax.swing.JComponent.setUI(Unknown Source)
at javax.swing.JTable.setUI(Unknown Source)
at javax.swing.JTable.updateUI(Unknown Source)
at db.DbFrame.InitSjwTableData(DbFrame.java:487)
at db.SearchRepAction$SearchRepThread.run(SearchRepAction.java:64)
1
1
1
1
1
1
Exception in thread "Thread-27" java.lang.NullPointerException
at javax.swing.plaf.basic.BasicTableUI$Handler.propertyChange(Unknown Source)
at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source)
at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source)
at java.awt.Component.firePropertyChange(Unknown Source)
at javax.swing.JComponent.setTransferHandler(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.uninstallDefaults(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.uninstallUI(Unknown Source)1
1

at javax.swing.JComponent.setUI(Unknown Source)
at javax.swing.JTable.setUI(Unknown Source)
at javax.swing.JTable.updateUI(Unknown Source)
at db.DbFrame.InitSjwTableData(DbFrame.java:487)
at db.SearchRepAction$SearchRepThread.run(SearchRepAction.java:64)
Exception in thread "Thread-28" java.lang.NullPointerException
at java.awt.Container.remove(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.uninstallUI(Unknown Source)
at javax.swing.JComponent.setUI(Unknown Source)
at javax.swing.JTable.setUI(Unknown Source)
at javax.swing.JTable.updateUI(Unknown Source)
at db.DbFrame.InitSjwTableData(DbFrame.java:487)
at db.SearchRepAction$SearchRepThread.run(SearchRepAction.java:64)
Exception in thread "Thread-29" java.lang.NullPointerException
at javax.swing.plaf.basic.BasicTableUI$Handler.propertyChange(Unknown Source)
at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source)
at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source)
at java.awt.Component.firePropertyChange(Unknown Source)
at javax.swing.JComponent.setTransferHandler(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.installDefaults2(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.installUI(Unknown Source)
at javax.swing.JComponent.setUI(Unknown Source)
at javax.swing.JTable.setUI(Unknown Source)
at javax.swing.JTable.updateUI(Unknown Source)
at db.DbFrame.InitSjwTableData(DbFrame.java:487)
at db.SearchRepAction$SearchRepThread.run(SearchRepAction.java:64)
java.lang.NullPointerException
at javax.swing.plaf.basic.BasicTableUI$Handler.propertyChange(Unknown Source)
at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source)
at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source)
at java.awt.Component.firePropertyChange(Unknown Source)
at javax.swing.JComponent.setTransferHandler(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.uninstallDefaults(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.uninstallUI(Unknown Source)
at javax.swing.JComponent.setUI(Unknown Source)
at javax.swing.JTable.setUI(Unknown Source)
at javax.swing.JTable.updateUI(Unknown Source)
at db.DbFrame.InitSjwTableData(DbFrame.java:487)
at db.SelectFileAction$SelectThread.run(SelectFileAction.java:37)
部分代码如下:
...全文
563 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
whfjy5210 2010-09-13
  • 打赏
  • 举报
回复
我想看看回复
gentalguo 2009-08-24
  • 打赏
  • 举报
回复 1
嗯~~~看到过很多人喜欢使用updateUI()这个方法
可是这个方法,参看一下api文档就会明白了
将 UI 属性重置为当前外观的值。JComponent 子类必须用以下方式重写此方法:
public void updateUI() {
setUI((SliderUI)UIManager.getUI(this);
}

这是JComponent中的方法,继承自JComponent方法。外观~~不是数据。
至于所说的空指针。看一下异常信息:


Exception in thread "Thread-17" java.lang.NullPointerException
at javax.swing.LookAndFeel.installProperty(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.installDefaults(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.installUI(Unknown Source)
at javax.swing.JComponent.setUI(Unknown Source)
at javax.swing.JTable.setUI(Unknown Source)
at javax.swing.JTable.updateUI(Unknown Source)
at db.DbFrame.InitSjwTableData(DbFrame.java:487)
at db.SearchRepAction$SearchRepThread.run(SearchRepAction.java:64)


已经明确告诉你:LookAndFeel外观感受找不到源。(Unknown Source)
而根本则是 javax.swing.JComponent.setUI(Unknown Source)
也就是说必须要setUI。你好像没有吧?至于说其它是否还有什么问题,你先解决了这个问题再说吧。
这行代码的位置,你的意图究竟是要做什么呢?
java1109 2009-08-23
  • 打赏
  • 举报
回复
DbMain.dbFrame.InitSjwTableData(tepVec);这个是报错的地方,里面代码如下
void InitSjwTableData(Vector <DbData> dVec)
{
for(int i =0;i < dVec.size();i++)
{
aSjwTable.addRow(dVec.elementAt(i));
}
table.updateUI();
}
楼主可以在InitSjwTableData这个方法最开始的地方
加两句代码
System.out.println(aSjwTable == null);
System.out.println(table == null);
试试
看看到底是哪个为空
sujiewen 2009-08-23
  • 打赏
  • 举报
回复
table.updateUI(); 这里报错呢
dz007 2009-08-23
  • 打赏
  • 举报
回复
空指针,找到出错的那行,看看是不是有漏掉赋值了。
monkeyking1987 2009-08-23
  • 打赏
  • 举报
回复
NULL指针异常是比较好解决的..把从哪一行出现的地方一个对象一个对象地输出来看一下就知道原因了
sujiewen 2009-08-23
  • 打赏
  • 举报
回复
System.out.println(tepVec.size());
这个有问题,为什么我执行一次,但是结果输出有好几次?这是为什么?
我的TableSorter代码是根据http://forums.sun.com/thread.jspa?threadID=744037&tstart=0
这个代码完成的
sujiewen 2009-08-23
  • 打赏
  • 举报
回复

;

这是涉及的主要代码:

public class SearchRepAction implements ActionListener
{

JDialog sDialog = new JDialog(DbMain.dbFrame, true);
JButton okButton = new JButton("确定");
JButton cacelButton = new JButton("取消");
JLabel labelOne = new JLabel("列的标识:");
JTextField textText = new JTextField(10);
JPanel paneTempOne = new JPanel();
GridBagConstraints cGrid;
private Vector<String> vecInt = new Vector<String>();
private class SearchRepThread extends Thread
{
public synchronized void run()
{
DbMain.dbFrame.setVisible(true);
DbMain.dbFrame.repaint();
DbMain.dbFrame.aSjwTable.fireTableStructureChanged();//
DbMain.dbFrame.dbVec.clear();
if (vecInt.size() > 0 && vecInt.size() <= DbMain.dbFrame.aSjwTable.getColumnCount())
{
Vector<DbData> tepVec = new Vector<DbData>();
Object[] obj = DbMain.dbFrame.aSjwTable.myModel.toArray();
for (int r = 0; r < obj.length; r++)
{
if (tepVec.size() > 0)
{
boolean bSjwFlag = false;
for (int n = 0; n < tepVec.size(); n++)
{
if(((DbData)obj[r]).comparePart(tepVec.elementAt(n), vecInt))
{
bSjwFlag = true;
break;
}
}
if(bSjwFlag == false)
tepVec.add((DbData)obj[r]);
}
else
tepVec.add((DbData)obj[r]);
}
if (tepVec.size() > 0)
{
DbMain.dbFrame.aSjwTable.myModel.clear();
System.out.println(tepVec.size());
DbMain.dbFrame.InitSjwTableData(tepVec);
DbMain.dbFrame.nToTal = DbMain.dbFrame.aSjwTable.getRowCount();
DbMain.dbFrame.labelTatalValue.setText(DbMain.dbFrame.nRemoveTotal+"/"+DbMain.dbFrame.nToTal);
}
DbMain.dbFrame.repaint();
}
}
}
public void actionPerformed(ActionEvent arg0)
{
int gridx, gridy, gridwidth, gridheight, anchor, fill, ipadx, ipady;
double weightx, weighty;
Insets inset;
GridBagLayout gridbag = new GridBagLayout();
paneTempOne.removeAll();
paneTempOne.repaint();
paneTempOne.validate();
DbMain.dbFrame.nRemoveTotal = 0;
DbMain.dbFrame.nToTal = 0;
paneTempOne.setLayout(gridbag);
sDialog.getContentPane().removeAll();
sDialog.setSize(new Dimension(300, 200));
sDialog.setLayout(new BorderLayout());
sDialog.setAlwaysOnTop(true);
Point p = DbMain.dbFrame.getLocation();
Dimension d = DbMain.dbFrame.getSize();
int x = p.x + (d.width - 200) / 2; // 计算
int y = p.y + (d.height - 200) / 2;
sDialog.setLocation(x, y); // 为dialog设置位置
if(DbMain.conf.getReQ().getStrReq() != null)
{
if(DbMain.conf.getReQ().getStrReq().trim().length() > 0)
textText.setText(DbMain.conf.getReQ().getStrReq());
}

gridx = 0; // 第0列
gridy = 0; // 第0行
gridwidth = 1; // 占一单位宽度
gridheight = 1; // 占一单位高度
weightx = 0; // 窗口增大时组件宽度增大比率0
weighty = 0; // 窗口增大时组件高度增大比率0
anchor = GridBagConstraints.CENTER; // 容器大于组件size时将组件置于容器中央
fill = GridBagConstraints.BOTH; // 窗口拉大时会填满水平与垂直空间
inset = new Insets(5, 5, 5, 5); // 组件间间距
ipadx = 0; // 组件内水平宽度
ipady = 0; // 组件内垂直高

cGrid = new GridBagConstraints(gridx, gridy, gridwidth, gridheight,
weightx, weighty, anchor, fill, inset, ipadx, ipady);
gridbag.setConstraints(labelOne, cGrid);
paneTempOne.add(labelOne);

gridx = 1;
gridy = 0;
cGrid = new GridBagConstraints(gridx, gridy, gridwidth, gridheight,
weightx, weighty, anchor, fill, inset, ipadx, ipady);
gridbag.setConstraints(textText, cGrid);
paneTempOne.add(textText);

gridx = 0;
gridy = 1;
cGrid = new GridBagConstraints(gridx, gridy, gridwidth, gridheight,
weightx, weighty, anchor, fill, inset, ipadx, ipady);
gridbag.setConstraints(okButton, cGrid);
paneTempOne.add(okButton);

gridx = 1;
gridy = 1;
cGrid = new GridBagConstraints(gridx, gridy, gridwidth, gridheight,
weightx, weighty, anchor, fill, inset, ipadx, ipady);
gridbag.setConstraints(cacelButton, cGrid);
paneTempOne.add(cacelButton);

okButton.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e)
{
vecInt.clear();
String strText = textText.getText().trim();
String[] strStr = strText.split("[$]");
if(strStr.length > 0)
{
for(int n=0;n < strStr.length;n++)
{
if(strStr[n].trim().length() > 0)
{
try
{
int nNum = Integer.parseInt(strStr[n].trim());
if(nNum <= DbMain.dbFrame.aSjwTable.getColumnCount())
vecInt.add(String.valueOf(nNum));
else throw new Exception("索引有误");
}
catch(Exception e3)
{
vecInt.clear();
break;
}
}
}
}
new SearchRepThread().start();
sDialog.dispose();
}

});
cacelButton.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent arg0)
{
sDialog.dispose();
}
});
sDialog.getContentPane().add(paneTempOne, BorderLayout.CENTER);

sDialog.setVisible(true);
}
}



DbMain.dbFrame.InitSjwTableData(tepVec);这个是报错的地方,里面代码如下
void InitSjwTableData(Vector<DbData> dVec)
{
for(int i =0;i < dVec.size();i++)
{
aSjwTable.addRow(dVec.elementAt(i));
}
table.updateUI();
}
dz007 2009-08-23
  • 打赏
  • 举报
回复
或者不用UpdateUI,直接更新TableModel呢
sujiewen 2009-08-23
  • 打赏
  • 举报
回复
xception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.plaf.basic.BasicTableUI.paintGrid(Unknown Source)
at javax.swing.plaf.basic.BasicTableUI.paint(Unknown Source)
at javax.swing.plaf.ComponentUI.update(Unknown Source)
at javax.swing.JComponent.paintComponent(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintWithOffscreenBuffer(Unknown Source)
at javax.swing.JComponent.paintDoubleBuffered(Unknown Source)
at javax.swing.JComponent._paintImmediately(Unknown Source)
at javax.swing.JComponent.paintImmediately(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at javax.swing.plaf.basic.BasicTableUI.paint(Unknown Source)
at javax.swing.plaf.ComponentUI.update(Unknown Source)
at javax.swing.JComponent.paintComponent(Unknown Source)
at javax.swing.JComponent.paint(Unknown Source)
at javax.swing.JComponent.paintWithOffscreenBuffer(Unknown Source)
at javax.swing.JComponent.paintDoubleBuffered(Unknown Source)
at javax.swing.JComponent._paintImmediately(Unknown Source)
at javax.swing.JComponent.paintImmediately(Unknown Source)
at javax.swing.RepaintManager.paintDirtyRegions(Unknown Source)
at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
dz007 2009-08-23
  • 打赏
  • 举报
回复
看下 DbMain.dbFrame 里的table有没初始化
sujiewen 2009-08-23
  • 打赏
  • 举报
回复
table.updateUI(); 这里报错呢
我在table.updateUI();这行前
System.out.println(aSjwTable == null);
System.out.println(table == null);

他们都不是空

62,636

社区成员

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

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