2011-08-24 34 views
2

我有JTable,我想在另一個框架的特定單元格中設置值。當我嘗試這樣做時,我得到空指針異常。我更改了修飾符並刪除了異常,但仍然無法設置值。來自另一個JFrame的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) { 
     } 
    } 

的chequevoucher是我的構造函數,這段代碼是好的,直到這個

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); 
     } 
    }); 

訪問修飾符不是靜態的,所以我得到以下錯誤堆棧

 
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException 
at client.ChequeVoucher.(ChequeVoucher.java:215) 
at client.popupBanks$3.mouseClicked(popupBanks.java:130) 
at java.awt.AWTEventMulticaster.mouseClicked(AWTEventMulticaster.java:253) 
at java.awt.Component.processMouseEvent(Component.java:6292) 
at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) 
at java.awt.Component.processEvent(Component.java:6054) 
at java.awt.Container.processEvent(Container.java:2041) 
at java.awt.Component.dispatchEventImpl(Component.java:4652) 
at java.awt.Container.dispatchEventImpl(Container.java:2099) 
at java.awt.Component.dispatchEvent(Component.java:4482) 
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577) 
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4247) 
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168) 
at java.awt.Container.dispatchEventImpl(Container.java:2085) 
at java.awt.Window.dispatchEventImpl(Window.java:2478) 
at java.awt.Component.dispatchEvent(Component.java:4482) 
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644) 
at java.awt.EventQueue.access$000(EventQueue.java:85) 
at java.awt.EventQueue$1.run(EventQueue.java:603) 
at java.awt.EventQueue$1.run(EventQueue.java:601) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) 
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98) 
at java.awt.EventQueue$2.run(EventQueue.java:617) 
at java.awt.EventQueue$2.run(EventQueue.java:615) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) 
at java.awt.EventQueue.dispatchEvent(EventQueue.java:614) 
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) 
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) 
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) 
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) 
at 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; 
    } 

對不起,我以前的帖子不清楚

+0

看這裏http://stackoverflow.com/questions/7053283/sending-messages-between-two-jpanel-objects,通過@Hovercraft全鰻魚的答案,這將是similair問題對我來說 – mKorbel

+0

@mKorbel 感謝,但這不是我正在尋找的,因爲我認爲我的JTable – Sedz

+0

的主要問題然後將MouseListener更改爲http://download.oracle.com/javase/tutorial/uiswing/events/listselectionlistener.html – mKorbel

回答

1

的ChequeVoucher你調用的方法肯定是一個構造函數,在這一點上,你的表是空的,除非你用別的東西指定它的值。你可以在你的構造函數中添加這個表來解決問題。 最好的解決方案是創建一個帶有JTable作爲構造函數參數的ChequeVoucher,並使用方法執行其他任何操作。