如何将组件添加到JDialog

d1=new JDialog(); d1.setSize(200, 100); t1=new JTextField(); t1.setBounds(10,10,40,20); d1.add(t1); 

我想在JDialog中添加组件,例如TextField,Button ……

1)首先创建一个Jpanel

 JPanel pan=new JPanel(); pan.setLayout(new FlowLayout()); 

2)将组件添加到该JPanel

 pan.add(new JLabel("label")); pan.add(new JButton("button")); 

3)创建JDialog

 JDialog jd=new JDialog(); 

4)将JPanel添加到JDialog

 jd.add(pan); 

您必须确保不使用布局管理器。

 d1.setLayout(null); 

默认情况下,使用BorderLayout。 使用布局管理器很棒,但真正好的,使窗口可resize等等,很难理解。 如果没有布局管理器,您可以在尝试时指定边界。

看看这个例子和教程..
1. 如何制作对话框
2. 动态添加组件到JDialog
3. 在JDialog中添加组件

您可以像添加到JFrame一样向JDialog添加组件,因为JDialog是一个java.awt.Container。 如果要设置要添加的组件的大小,则应使用布局管理器或将布局设置为null。

我不确定你真的希望如何布置你的组件,但下面的代码片段应该实现我猜你正在尝试用你当前的代码。 尝试使用LayoutManager,布局约束,首选/最大/最小大小尽可能多地工作,并避免使用setLocation / setSize / setBounds。

 import java.awt.FlowLayout; import javax.swing.BorderFactory; import javax.swing.JDialog; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.SwingUtilities; public class Test5 { protected static void initUI() { JDialog dialog = new JDialog(); JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT)); panel.setBorder(BorderFactory.createEmptyBorder(10, 10, 0, 0)); JTextField textfield = new JTextField(8); textfield.setBounds(10, 10, 40, 20); panel.add(textfield); dialog.add(panel); dialog.setSize(200, 100); dialog.setLocationRelativeTo(null); dialog.setVisible(true); } public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { initUI(); } }); } } 

您应该阅读有关LayoutManager的内容。 花点时间来了解它们,了解它们的工作方式以及存在的不同方法。 你不会后悔花几分钟时间。