将JDialog定位在Swing中的JTextField下面?

时间:2010-10-26 15:44:58

标签: java swing


我想在JFrame的JTextField下面放置一个JDialog框,当对话框打开时,我的JFrame不能移动 - 也就是说,它不应该是可拖动的。有什么建议吗?

3 个答案:

答案 0 :(得分:2)

public class DialogTest {
    public static void main(String[] args) {

        final JFrame frame = new JFrame("Frame");
        JTextField field = new JTextField("Click me to open dialog!");
        field.addMouseListener(new MouseAdapter() {

            @Override
            public void mousePressed(MouseEvent e) {
                JTextField f = (JTextField) e.getSource();
                Point l = f.getLocationOnScreen();

                JDialog d = new JDialog(frame, "Dialog", true);
                d.setLocation(l.x, l.y + f.getHeight());
                d.setSize(200, 200);
                d.setVisible(true);
            }
        });
        frame.add(field);

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(200, 100);
        frame.setVisible(true);
    }
}

答案 1 :(得分:0)

使用JDialog.setLocationRelativeTo将其设置在文本字段下方。

答案 2 :(得分:0)

像这样创建一个模态JDialog。

public class MyDialog extends JDialog
{
  private int width = 50;
  private int height = 50;

  public MyDialog(Frame parent, int x, int y)
  {
    super(parent, "MyTitle", true);
    setBounds(x, y, width, height);
  }

}

作为模态意味着在对话框关闭之前,用户将无法与父级交互。您可以找出所需的位置,并在构造函数中传递x,y坐标。