0
final JFileChooser chooser = new JFileChooser(); 
JOptionPane.showInternalOptionDialog(this, chooser, "Browse",
        JOptionPane.DEFAULT_OPTION, JOptionPane.PLAIN_MESSAGE, null,
        new Object[]{}, null);
            chooser.addActionListener(new ActionListener() {        
                public void actionPerformed(ActionEvent e) {
                   if(e.getActionCommand().equals(JFileChooser.APPROVE_SELECTION))

                        System.out.println("File selected: " +
 chooser.getSelectedFile());
                        //code to close here
                    } else { 
                        //code to close here
                    }
                }
            });

このコードは奇妙に見えますが、これは私のプログラムの一部にすぎません。フルスクリーンを使用していますGraphicsDevice。全画面表示のウィンドウを保持するために、内部のJOptionPaneにファイル チューザーを配置しました。ここで、アクション リスナーでアプリケーション全体を閉じることなく、 JOptionPane内部自体をプログラムで閉じたいと考えました。どうすればそれができますか?

4

1 に答える 1

0

showInternalOptionDialogを呼び出すと、ダイアログへの参照に簡単にアクセスできません。オプションを追加できます。使用する

new Object[] { "Browse", "Cancel" }

それ以外の

new Object[]{}

しかし、そうすると、2セットのボタンができてしまいます。JFileChooserでshowInternalOptionDialogを使用する簡単な方法はないと思います。JInternalFrameを自分で作成することをお勧めします。

final JFileChooser chooser = new JFileChooser();
JOptionPane pane = new JOptionPane(chooser, JOptionPane.PLAIN_MESSAGE,
            JOptionPane.DEFAULT_OPTION, null, new Object[0], null);
final JInternalFrame dialog = pane.createInternalFrame(this, "Dialog Frame");
chooser.addActionListener(new ActionListener() {

    public void actionPerformed(ActionEvent e) {
        if (e.getActionCommand().equals(JFileChooser.APPROVE_SELECTION)) {
            System.out.println("File selected: "
                    + chooser.getSelectedFile());
        }
        dialog.setVisible(false);
    }
});
dialog.setVisible(true);

また、コードスニペットでは、showInternalOptionDialogの後にaddActionListenerを呼び出しています。showInternalOptionDialogの呼び出しは、ダイアログを閉じた後にのみ返されるため、ActionListenerの作成が遅すぎます。最初にaddActionListenerを追加してから、ダイアログを表示する必要があります。

于 2013-01-01T19:18:54.590 に答える