0

JDialogで選択した後、ボックスに画像を表示する基本的なスイングプログラムを作成しましたJFileChooserJScrollPaneダイアログボックスのJLabel内側と、ペイン内のアイコンとして画像が追加されている画像を使用しました。

以下は、ダイアログボックスとその内容を作成するために使用したコードです。オブジェクトは、単純な新しい呼び出しで既に初期化されています。

    jDialog1.setTitle("Image");
    jDialog1.setModal(true);

    jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
    jScrollPane2.setViewportView(jLabel1);

GUIの構築にはNetbeansが使用されています。

以下は、画像を読み込んで表示するために使用したコードです。

    int rval = jFileChooser1.showDialog(this, "Show");
    File f = jFileChooser1.getSelectedFile();
    jDialog1.setTitle(jDialog1.getTitle() + " : " + f.getName());
    try {
        BufferedImage bf = ImageIO.read(f);
        jLabel1.setIcon(new ImageIcon(bf));
    }
    catch (IOException ioe) {
    }
    jDialog1.setLocationRelativeTo(null);
    jDialog1.setVisible(true);
    jDialog1.pack();

画像を読み込んで表示しますが、問題は

  • ダイアログボックスが左上隅に最小化された形式で表示され、画像を表示するにはその隅をドラッグする必要があります。同じ画像を含みます。

    ここに画像の説明を入力してください

  • ダイアログボックスが完全に拡張され、画像が完全に表示されるずっと前に、スクロールペインの水平スクロールが消えます。垂直スクロールバーは正常に機能しますが。

両方のサイズと優先サイズを設定しようJDialogとしJLabelましたが、問題は解決しません。

よろしくお願いします!

注:水平スクロールバーの問題はpack()、ダイアログボックスのメソッドを使用して解決されますが、最小化されたダイアログボックスは引き続き表示されます。また、画面中央にもダイアログボックスが表示されるようになりました。

4

1 に答える 1

3

メソッド呼び出しのシーケンスはモーダルダイアログにとって重要です。ダイアログを表示する前にパックを呼び出す必要があります(そうしないと、ダイアログが閉じられる前にパックが実行されないため)。

dialog.pack();
// Edit: manually double its size:
dialog.setSize(dialog.getPreferredSize().width * 2, dialog.getPreferredSize().height * 2);
dialog.setVisible(true);
于 2013-03-30T10:43:56.970 に答える