2009-11-04 1 views

ответ

27

довольно просто Oh..it в:

Скажем, у вас есть JFrame, который содержит JDialog, и вы хотите JDialog (при открытии), чтобы быть на самом верху JFrame.

Так в JDialog конструктор, вы должны иметь что-то вроде:

public class MyDialog extends JDialog 
public MyDialog(JFrame parent) 
{ 
    super.setLocationRelativeTo(parent); // this will do the job 
} 

Другими словами, передать указатель JFrame в ваш диалог, и вызвать setLocationRelativeTo (...); метод.

+0

Я не знал, что этот метод существует; очень удобно! – rob

+6

Вау, это действительно помогло мне! Небольшая деталь, хотя ... она должна быть вызвана только ПОСЛЕ установки размера диалогового окна, или появится диалоговое окно с верхним левым углом, расположенным в центре родительского окна. – Nyerguds

3

О каком всплывающем диалоге вы говорите? Если вы используете JOptionPane или что-то подобное, установите его родительский компонент в JFrame, и он автоматически центрируется поверх окна JFrame.

JOptionPane.showMessageDialog(frame, "Hello, World!"); 

Если вы создаете свой собственный JDialog, вы можете получить позицию фрейма, используя JFrame.getLocation() и его размер с помощью JFrame.getSize(). Математика довольно проста оттуда; просто вычислите центр JFrame и вычтите половину ширины/высоты JDialog, чтобы получить верхний левый угол вашего диалога.

Если ваш JDialog еще не был отображен, JFrame.getSize() может дать вам нулевой размер. В этом случае вы можете использовать JDialog.getPreferredSize(), чтобы узнать, насколько велика она будет отображаться на экране.

0

Если вы хотите модальность и в центре диалогового окна на окне ...

В конструкторе диалогового окна в:

class CustomDialog extends JDialog { 
    public CustomDialog(Frame owner, String title, boolean modal) { 
     super(owner, title, modal); 
     setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE); 

     ... 

     setSize(150, 100); 
     setLocationRelativeTo(owner); 
    } 
} 

Чтобы отобразить диалоговое окно (с помощью кнопки и т. Д.):

public void actionPerformed(ActionEvent e) { 
    dialog.setVisible(true); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^