0

今日は少し問題があります。コードを実行しようとすると、NullPointerException が発生します。例外の手がかりは、ここにあるこの関数に私を導きます:

private void irGuiJuego(JFrame frame){
    SwingConsole.run(new GUIJuego(), 800, 600, true);
    frame.dispose();
}

SwingConsole のコードは次のとおりです。

package utiles;

import javax.swing.JFrame;
import javax.swing.SwingUtilities;

public class SwingConsole {

    public static void run(final JFrame frame, final int width, final int height, final boolean exitOnClose) {

        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {

                if (exitOnClose)
                    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                frame.setSize(width, height);
                //frame.setResizable(false);
                frame.setVisible(true);

            }
        });
    }

    public static void run(final JFrame frame, final int width, final int height, final boolean exitOnClose, final String title) {

        SwingUtilities.invokeLater(new Runnable() {

            @Override
            public void run() {

                if (exitOnClose)
                    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

                frame.setTitle(title);
                frame.setSize(width, height);
                frame.setVisible(true);

            }
        });
    }


}

同じ方法を使用して別のフレームを開くことを考えると、この関数は具体的には奇妙です。

private void volverMenuInicio(JFrame frame){
    SwingConsole.run(new MenuInicio(), 300, 150, true);
    frame.dispose();
}

ここに投稿するのはちょっとやり過ぎなので、GUIJuego フレームのペーストビンを残しておきます: http://pastebin.com/LSXbc7KE。必要な場合に備えて、他のフレームのペーストビンも用意してください: http: //pastebin.com/hbdd7j84

編集:これがスタックトレースです。以前は不足していて申し訳ありません!

スレッド「AWT-EventQueue-0」での例外 java.lang.NullPointerException at java.awt.Container.addImpl(Unknown Source) at java.awt.Container.add(Unknown Source) at gui.GUIJuego.(GUIJuego.java:113) ) gui.MenuNuevoJuego.irGuiJuego(MenuNuevoJuego.java:95) で gui.MenuNuevoJuego.access$2(MenuNuevoJuego.java:94) で gui.MenuNuevoJuego$2.actionPerformed(MenuNuevoJuego.java:74) で javax.swing.AbstractButton.fireActionPerformed (不明なソース) javax.swing.AbstractButton$Handler.actionPerformed で (不明なソース) javax.swing.DefaultButtonModel.fireActionPerformed で (不明なソース) javax.swing.DefaultButtonModel.setPressed で(不明なソース) javax.swing.plaf.basic で.BasicButtonListener.mouseReleased(不明なソース) java.awt.Component.processMouseEvent(不明なソース) で javax.swing.JComponent.processMouseEvent(不明なソース) java.awt.Component.processEvent(不明なソース) で java.awt.Container.processEvent(不明なソース) java.awt.Component.dispatchEventImpl(不明なソース) で java.awt.Container. java.awt.LightweightDispatcher.retargetMouseEvent(不明なソース) の java.awt.Component.dispatchEvent(不明なソース) での dispatchEventImpl(不明なソース) java.awt.LightweightDispatcher.processMouseEvent(不明なソース) での java.awt.LightweightDispatcher.dispatchEvent(ソース不明) java.awt.Container.dispatchEventImpl(ソース不明) java.awt.Window.dispatchEventImpl(ソース不明) java.awt.Component.dispatchEvent(ソース不明) java.awt.EventQueue.dispatchEventImpl(ソース不明) ) java.awt.EventQueue.access$200 で (ソース不明) java.awt.EventQueue$3 で。java.awt.EventQueue$3 で実行 (不明なソース)。 java.security.AccessController.doPrivileged (ネイティブ メソッド) で実行 (不明なソース) java.security.ProtectionDomain$1 で実行。 java.awt.EventQueue$4 の .doIntersectionPrivilege(未知のソース) java.awt.EventQueue$4.run の (未知のソース) java.security.AccessController.doPrivileged(ネイティブ メソッド) の java.security.ProtectionDomain で$1.doIntersectionPrivilege(不明なソース) java.awt.EventQueue.dispatchEvent(不明なソース) で java.awt.EventDispatchThread.pumpOneEventForFilters(不明なソース) java.awt.EventDispatchThread.pumpEventsForFilter(不明なソース) で java.awt.EventDispatchThread. java.awt の pumpEventsForHierarchy(不明なソース)。java.awt.EventDispatchThread.pumpEvents(不明なソース) の EventDispatchThread.pumpEvents(不明なソース) java.awt.EventDispatchThread.run(不明なソース)

ところで、読んでくれてありがとう!

4

1 に答える 1

1

スタック トレースが示すように、NPE は GUIJuego.java の 113 行目からスローされています。

panelDatosCiudad.add(arcaLabel);

これarcaLabelは、35 行目で定義されている が値に設定されていないため、コンテナに null JLabel を追加しているためです。

于 2013-11-11T19:19:11.403 に答える