2

私は JFrame を持っており、そのフレームには JButton があります。私が望むのは、そのファイルがクリックされたときに、ユーザーが Java JFileChooser を使用してファイルをロードできることです。

FileChooser を次のように宣言します。

JFileChooser fc;

次に、ボタンのアクション リスナーのコードを次に示します。

JButton btnLoad = new JButton("Load .txt");
    btnLoad.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {

            int returnVal = fc.showOpenDialog(OpenFile.this);

            if (returnVal == JFileChooser.APPROVE_OPTION) {
                File file = fc.getSelectedFile();
                //This is where a real application would open the file.
                System.out.println("Opening: " + file.getName() + ".");
            } else {
                System.out.println("Open command cancelled by user.");
            }


        }
    });

それが私を生み出しているというエラーは

スレッド「AWT-EventQueue-0」での例外 java.lang.NullPointerException at maple.Netflix$2.actionPerformed(Netflix.java:73) at javax.swing.AbstractButton.fireActionPerformed(Unknown Source) at javax.swing.AbstractButton$Handler. javax.swing.DefaultButtonModel.fireActionPerformed (不明なソース) で javax.swing.DefaultButtonModel.setPressed (不明なソース) で javax.swing.plaf.basic.BasicButtonListener.mouseReleased (不明なソース) で java.awt. AWTEventMulticaster.mouseReleased (不明なソース) で java.awt.Component.processMouseEvent (不明なソース) で javax.swing.JComponent.processMouseEvent (不明なソース) で java.awt.Component.processEvent (不明なソース) で java.awt.Container. java.awt.Component の processEvent(不明なソース)。java.awt.Container.dispatchEventImpl(不明なソース) で java.awt.Component.dispatchEvent(不明なソース) で java.awt.LightweightDispatcher.retargetMouseEvent(不明なソース) で 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.run(不明なソース)で java.awt.EventQueue$3.run(不明) Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(不明なソース) で java.security.ProtectionDomain$1.doIntersectionPrivilege(不明なソース) で java.awt.EventQueue$4.run(不明なソース) で java.awt.EventQueue$4.run(不明なソース) でjava.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(Unknown Source) java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) java .awt.EventDispatchThread.pumpEventsForFilter(不明なソース)、java.awt.EventDispatchThread.pumpEventsForHierarchy(不明なソース)、java.awt.EventDispatchThread.pumpEvents(不明なソース)、java.awt.EventDispatchThread.pumpEvents(不明なソース)、java.awt .EventDispatchThread.実行 (不明なソース)

これが73行目です。

int returnVal = fc.showOpenDialog(Netflix.this);
4

2 に答える 2

5

JFileChooser 変数を宣言するだけでは十分ではありません。参照変数 fc を使用する前に有効なオブジェクトに初期化する必要があるためです。これは、他の参照変数と同じです。

JFileChooser fc = new JFileChooser();
于 2013-07-31T16:24:27.180 に答える
2

の値fcはヌルです。メソッドを呼び出す前に、適切なオブジェクトのオブジェクトに設定する必要があります。

于 2013-07-31T16:26:06.400 に答える