gpt4 book ai didi

java - 将组件动态添加到 JDialog

转载 作者:IT老高 更新时间:2023-10-28 20:21:35 26 4
gpt4 key购买 nike

当用户单击 JDialog 上的按钮时,我无法将 JComponents 添加到 JDialog。基本上我希望它看起来像这样:

When the dialog is opened

然后,当用户单击“添加新字段”时,我希望它看起来像这样:

After the user clicks "Add New Field"

我似乎无法获得添加新 JLabel 或 JTextField 的对话框。谁能指出我正确的方向?

编辑:这是“添加新字段”按钮的操作(现在只是尝试一个标签)。

@Action
public void addNewField()
{
Container contentPane = getContentPane();
JLabel label = new JLabel ("welkom");
contentPane.add(label, BorderLayout.CENTER);
}

解决方案:

我使用了 mre 的解决方案并让它工作。这是我的最终功能:

@Action
public void addNewField()
{
System.out.println("New Field...");
Container contentPane = getContentPane();
JLabel label = new JLabel ("welcome");
label.setBounds(10,10,100,10); //some random value that I know is in my dialog
contentPane.add(label);

contentPane.validate();
contentPane.repaint();
this.pack();
}

我的另一个问题是我在 NetBeans 中使用“自由设计”布局,这意味着我的标签可能位于某个奇怪的位置,而不是在我的对话框范围内(只是猜测)。我用 label.setBounds() 解决了这个问题,让它准确地显示在我想要的位置。

最佳答案

在容器中动态添加/删除组件时,需要调用 revalidate()/validate()repaint()之后。前者将强制容器重新布局其组件,后者将删除任何视觉“工件”。

关于java - 将组件动态添加到 JDialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6988317/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com