1

在创建和显示 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();

什么也没做。

4

1 回答 1

4

您创建了一个模态对话框。因此,一旦您调用setVisible(true),以下指令将等待关闭对话框以执行。

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

于 2012-12-22T11:31:18.570 回答