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

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

4

5 回答 5

10

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);
于 2012-06-29T11:33:48.980 回答
0

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

d1.setLayout(null);

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

于 2012-06-29T11:25:40.413 回答
0

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

于 2012-06-29T11:27:14.173 回答
0

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

于 2012-06-29T12:13:12.243 回答
0

我不确定你真的希望你的组件如何布局,但下面的代码片段应该可以实现我猜你正在尝试用你当前的代码做的事情。尽量使用 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的信息。花点时间去了解它,了解它们是如何工作的以及存在的不同的。你不会后悔花几分钟的时间。

于 2012-06-29T12:39:33.340 回答