2012-12-22 29 views
0

我有一個JInternalFrame的,我想調用另一個JInternalFrame的,當我在一個JTextField按F1,但是我得到的NullPointerException。這是我的代碼的keyPressed調用的JInternalFrame返回NullException

GUI:

jLabel2.setText("ID:"); 
    getContentPane().add(jLabel2); 
    jLabel2.setBounds(10, 240, 15, 25); 
    getContentPane().add(jTextField11); 
    jTextField11.setBounds(30, 240, 70, 25); 
    jTextField11.addKeyListener(this); 

的KeyEvent:

public void keyPressed(KeyEvent arg0) { 
    // TODO Auto-generated method stub 
    if(arg0.getKeyCode() == KeyEvent.VK_F1){ 
     listProducto.setVisible(true);******ERROR****** 
     Main.getInstance().getPortada().getDesktop().add(listProducto); 
     Main.getInstance().getPortada().getDesktop() 
       .moveToFront(listProducto); 
     try { 
      listProducto.setSelected(true); 
     } catch (PropertyVetoException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 
} 
+0

檢查'listProducto'是'null'並添加完整的堆棧跟蹤 –

+0

剛纔檢查它與searchForm的初始化問題。 – Washu

+0

@LukasKnuth如果我已經找到解決辦法我能做些什麼?關閉這個問題?? – Washu

回答

1

的問題是,我忘了初始化在所述的initComponents searchForm();

這是我缺少的代碼。

listProducto = new ListProducto(); 
    listProducto.addSearchEventListener(new searchEventListener() { 
     public void resultFound(EventObject e) { 
      listProductoSearchPerformed(); 
     } 
    }); 

對於我的搜索,我創建了一個searchForm來處理searchListeners。我也添加它的代碼。

package com.mbpe.search; 

import java.beans.PropertyVetoException; 
import java.util.ArrayList; 
import java.util.Iterator; 
import javax.swing.JInternalFrame; 
import javax.swing.JInternalFrame; 
import com.mbpe.gui.Portada; 
import com.mbpe.main.Main; 
import com.mbpe.main.searchEvent; 
import com.mbpe.main.searchEventListener; 



@SuppressWarnings("serial") 
public class searchForm extends JInternalFrame { 
public searchForm(String title, boolean resizable, boolean closable, 
     boolean maximizable, boolean iconifiable) { 
    super(title, resizable, closable, maximizable, iconifiable); 
} 

private List _listeners = new ArrayList(); 
public synchronized void addSearchEventListener(searchEventListener listener) { 
    _listeners.add(listener); 
} 
public synchronized void removeSearchEventListener(searchEventListener listener) { 
    _listeners.remove(listener); 
} 
public synchronized void fireEvent() { 
    searchEvent event = new searchEvent(this); 
    Iterator i = _listeners.iterator(); 
    while (i.hasNext()) { 
     ((searchEventListener) i.next()).resultFound(event); 
    } 
} 

public void onClose() { 

} 

public void onClosing() { 
    dispose(); 
} 

}