8

ファイルを開くダイアログが必要なJavaプログラムを書いています。ファイルを開くダイアログは難しくありません。を使用したいと思っていますJFileChooser。私の問題は、2つJFrameのペイン(2で構成されるJPanels)が必要なことです。左側のパネルには、JListがあり、右側のパネルにはファイルを開くダイアログがあります。

これを使用JFileChooser.showOpenDialog()すると、他のすべてのウィンドウの上にダイアログボックスが開きますが、これは私が望んでいることではありません。JFileChooser(または別のファイル選択ダイアログ)を内部に表示し、JPanelその上にポップアップしないようにする方法はありますか?

これが私が試したコードですが、この時点では非常に単純化されています。この時点JFileChooserでは、をに埋め込むことだけを試みています。JPanel

public class JFC extends JFrame{
    public JFC()
    {
        setSize(800,600);

        JPanel panel= new JPanel();

        JFileChooser chooser = new JFileChooser();
        panel.add(chooser);

        setVisible(true);

        chooser.showOpenDialog(null);
    }

    public static void main(String[] args)
    {
        JFC blah = new JFC();
    }
}

私もとで電話chooser.showOpenDialogthisかけてみpanelましたが、役に立ちませんでした。JFileChooserまた、フレームに直接追加してみました。上記の両方の試行JFileChooserでは、フレームまたはパネルの前にポップアップが表示されます(どちらに追加するかによって異なりJFileChooserます)。

4

4 に答える 4

11

JFileChooserはJComponentとComponentを拡張するため、フレームに直接追加できるはずです。

JFileChooser fc = ...
JPanel panel ...
panel.add(fc);
于 2008-11-03T18:58:57.273 に答える
5

ファイル チューザーの「ボタン」にアクセスするには、ActionListener を追加する必要があります。

fileChooser.addActionListener(this);
[...]

public void actionPerformed(ActionEvent action)
{
    if (action.getActionCommand().equals("CancelSelection"))
    {
        System.out.printf("CancelSelection\n");
        this.setVisible(false);
        this.dispose();
    }
    if (action.getActionCommand().equals("ApproveSelection"))
    {
        System.out.printf("ApproveSelection\n");
        this.setVisible(false);
        this.dispose();
    }
}
于 2008-11-05T09:41:44.697 に答える
3

その場で JFileChooser を追加する場合は、 revalidate() を呼び出す必要があります。

スティーブの答えは正しいです。JFileChooser を他のコンテナに追加できます。

于 2008-11-03T19:18:00.870 に答える
2

Johannes へ: 有用なスニペットをありがとう。

「ApproveSelection」と「CancelSelection」の代わりに、定義済みの定数JFileChooser.APPROVE_SELECTIONJFileChooser.CANCEL_SELECTION

于 2009-09-10T16:34:15.780 に答える