【问题标题】:JTable value from another JFrame来自另一个 JFrame 的 JTable 值
【发布时间】: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;
  }

抱歉之前的帖子不清楚

【问题讨论】:

标签: java swing jtable access-modifiers


【解决方案1】:

您调用的 ChequeVoucher 方法绝对是一个构造函数,此时,您的表为空,除非您用其他东西指定它的值。您可以在构造函数中添加表格,这将解决问题。 最好的解决方案是使用您的 JTable 作为构造函数参数创建一个 ChequeVoucher,并使用方法执行其他所有操作。

【讨论】:

    猜你喜欢
    • 2013-10-27
    • 2021-10-10
    • 1970-01-01
    • 2022-06-30
    • 2018-10-02
    • 2013-06-21
    • 1970-01-01
    • 2015-01-16
    • 1970-01-01
    相关资源
    最近更新 更多