在JDialog中更改JPanel内容

时间:2012-12-22 11:26:42

标签: java swing

我正在尝试在创建和显示JDialog之后将其添加到JDialog中。我没有尝试让更改实际更新到屏幕,我已经阅读并应用了我能找到的与此相关的每个问题。

此示例代码创建一个显示单词“test”的模态JDialog。我不能让它显示“test2”。几乎完全相同的代码,但使用JFrame而不是JDialog的行为与我期望的一样,所以我不明白。我是Java新手,特别是摇摆。

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();

没有做任何事。

1 个答案:

答案 0 :(得分:4)

您创建了一个模态对话框。因此,只要您调用setVisible(true),以下说明就会等待关闭对话框以便执行。

在对话框可见之前添加标签,或者将对象放在显示对话框后调用的事件处理程序中,例如,当您单击此对话框中的按钮时。