【问题标题】:KeyPressed calling JInternalFrame returns NullExceptionKeyPressed 调用 JInternalFrame 返回 Null 异常
【发布时间】:2012-12-22 16:45:18
【问题描述】:

我有一个 JInternalFrame,当我在 JTextField 中按 F1 时我想调用另一个 JInternalFrame,但是我得到了 NullPointerException。这是我的代码

图形界面:

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

按键事件:

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

【问题讨论】:

  • 检查 listProducto 是否为 null 并添加完整的 StackTrace
  • 刚查了一下是searchForm初始化的问题。
  • @LukasKnuth 如果我已经找到解决方案,我该怎么办?关闭问题??。
  • 自己回答并解释错误是什么。

标签: java keyevent jinternalframe


【解决方案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();
}

}

【讨论】:

    猜你喜欢
    • 2014-10-29
    • 2011-05-23
    • 1970-01-01
    • 2012-12-22
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多