Java 按键调用JInternalFrame返回NullException
我有一个JInternalFrame,当我在JTextField中按F1时,我想调用另一个JInternalFrame,但是我得到的是NullPointerException。这是我的密码 图形用户界面: 关键事件:Java 按键调用JInternalFrame返回NullException,java,keyevent,jinternalframe,Java,Keyevent,Jinternalframe,我有一个JInternalFrame,当我在JTextField中按F1时,我想调用另一个JInternalFrame,但是我得到的是NullPointerException。这是我的密码 图形用户界面: 关键事件: public void keyPressed(KeyEvent arg0) { // TODO Auto-generated method stub if( arg0.getKeyCode() == KeyEvent.VK_F1 ){ listPro
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();
}
}
}
问题是我忘记在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();
}
}检查
listProducto
是否为null
并添加完整的堆栈tracejust checked搜索表单初始化有问题。@LukasKnuth如果我已经找到解决方案,我能做什么?结束问题???。自己回答并解释错误是什么。
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();
}