1

コンポーネントを作成して表示した後、JDialog にコンポーネントを追加しようとしています。変更を実際に画面に更新することは何も試していません。これに関連するすべての質問を読んで適用しました。

このコード例は、「test」という単語を表示するモーダル JDialog を作成します。「test2」を表示できません。ほぼ同じコードですが、JDialog の代わりに JFrame を使用すると、期待どおりに動作するため、理解できません。私はJavaが初めてで、特にswingが初めてです。

import javax.swing.*;
public class DialogTester {
    public static void main(String[] args) {
        new DialogTester();
    }

    public DialogTester() {
        JFrame jframe = new JFrame();
        jframe.setVisible(true);
        JDialog jdialog = new JDialog(jframe,true);
        JPanel jpanel = new JPanel();
        jpanel.add(new JLabel("test"));
        jdialog.add(jpanel);
        jdialog.setVisible(true);
        jpanel.add(new JLabel("test2"));
        jpanel.revalidate();
        jdialog.getContentPane().validate();
        jdialog.pack();

    }
}

私も電話してみた

jdialog.repaint();

何もしませんでした。

4

1 に答える 1

4

モーダル ダイアログを作成しました。そのため、 を呼び出すとすぐsetVisible(true)に、次の命令はダイアログが閉じられるのを待って実行されます。

ダイアログが表示される前にラベルを追加するコードを配置するか、ダイアログが表示された後 (たとえば、このダイアログのボタンをクリックしたとき) に呼び出されるイベント ハンドラーにコードを配置します。

于 2012-12-22T11:31:18.570 に答える