Позиционирование JDialog, чтобы появиться ниже JTextField в Swing? - PullRequest
4 голосов
/ 26 октября 2010


Я хочу расположить поле JDialog ниже JTextField JFrame, и когда диалоговое окно открывается, мой JFrame не должен двигаться, то есть он не должен быть перемещаемым. Есть предложения?

Ответы [ 3 ]

2 голосов
/ 26 октября 2010
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);
    }
}
0 голосов
/ 26 октября 2010

Создайте модальный 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 в конструкторе.

0 голосов
/ 26 октября 2010

Используйте JDialog.setLocationRelativeTo, чтобы установить его под текстовым полем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...