【发布时间】:2011-11-02 13:21:13
【问题描述】:
我有JTable,我想在另一帧的特定单元格处设置值。当我尝试这样做时,我得到空指针异常。我更改了修饰符并删除了异常,但仍然无法设置值。
请大家帮忙
public ChequeVoucher(int id,int row){
try {
String str = get_bank_name(id);
System.out.println(str);
table.getModel().setValueAt(str,row,5);
table.getModel().setValueAt(id,row,4);
} catch (SQLException f) {
}
setBank(id,row);
}
public void setBank(int id,int row){
try {
String str = get_bank_name(id);
table.getModel().setValueAt(str,row,5);
} catch (SQLException f) {
}
}
支票凭证是我的构造函数,这段代码在此之前是好的
table.getModel().setValueAt(str,row,5);
我从JFrame得到的值是
table.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
int row = table.getSelectedRow();
int col = table.getSelectedColumn();
String str_id = (String)GetID(row,0);
int id = Integer.parseInt(str_id);
ChequeVoucher CV = new ChequeVoucher(id,row);
setVisible(false);
}
});
访问修饰符不是静态的,所以我得到以下错误堆栈
线程“AWT-EventQueue-0”中的异常 java.lang.NullPointerException 在 client.ChequeVoucher.(ChequeVoucher.java:215) 在 client.popupBanks$3.mouseClicked(popupBanks.java:130) 在 java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:253) 在 java.awt.Component.processMouseEvent(Component.java:6292) 在 javax.swing.JComponent.processMouseEvent(JComponent.java:3267) 在 java.awt.Component.processEvent(Component.java:6054) 在 java.awt.Container.processEvent(Container.java:2041) 在 java.awt.Component.dispatchEventImpl(Component.java:4652) 在 java.awt.Container.dispatchEventImpl(Container.java:2099) 在 java.awt.Component.dispatchEvent(Component.java:4482) 在 java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577) 在 java.awt.LightweightDispatcher.processMouseEvent(Container.java:4247) 在 java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168) 在 java.awt.Container.dispatchEventImpl(Container.java:2085) 在 java.awt.Window.dispatchEventImpl(Window.java:2478) 在 java.awt.Component.dispatchEvent(Component.java:4482) 在 java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644) 在 java.awt.EventQueue.access$000(EventQueue.java:85) 在 java.awt.EventQueue$1.run(EventQueue.java:603) 在 java.awt.EventQueue$1.run(EventQueue.java:601) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) 在 java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98) 在 java.awt.EventQueue$2.run(EventQueue.java:617) 在 java.awt.EventQueue$2.run(EventQueue.java:615) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) 在 java.awt.EventQueue.dispatchEvent(EventQueue.java:614) 在 java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) 在 java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) 在 java.awt.EventDispatchThread.pumpEventsForHierarchy (EventDispatchThread.java:174) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) 在 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) 在 java.awt.EventDispatchThread.run(EventDispatchThread.java:122)当我将修饰符设为静态时,我没有任何异常,但什么也没有发生,我不能再听 JTable 了
case KeyEvent.VK_F5:
switch(col){
case 4:
//show the banks
popupBanks pB = new popupBanks(row);
pB.setVisible(true);
break;
}
抱歉之前的帖子不清楚
【问题讨论】:
-
看这里stackoverflow.com/questions/7053283/…,@Hovercraft Full Of Eels 的回答,这对我来说是类似的问题
-
@mKorbel 谢谢,但这不是我想要的,因为我认为 JTable 的主要问题
-
然后将 MouseListener 更改为 download.oracle.com/javase/tutorial/uiswing/events/…
-
请不要吞下异常。
-
那么您未显示的代码有问题 - 您的设置有误。退后一步,了解对象、类和访问器范围......
标签: java swing jtable access-modifiers