如何在屏幕中心定位JOptionPane.showMessageDialog?

时间:2014-08-03 11:20:37

标签: java swing joptionpane

目前,弹出的对话框位于单击的Jbutton组件的正下方。

2 个答案:

答案 0 :(得分:4)

你可以试试这个:

JOptionPane.showMessageDialog(frame, "Hello");

JOptionPane.showMessageDialog(this, "Hello");

来自Java Docs:

  

parentComponent:定义要作为其父级的Component   这个对话框。它有两种使用方式:包含它的框架   用作对话框的Frame父级及其屏幕   坐标用于放置对话框。一般来说,   对话框位于组件正下方。这个参数可以   为null,在这种情况下,默认的Frame用作父级,而   对话框将以屏幕为中心(取决于L& F)。

答案 1 :(得分:2)

要在屏幕上居中显示选项窗格,请提供null父级,但请注意,不会阻止用户访问父组件GUI。

E.G。

import java.awt.Component;
import javax.swing.*;

class CenterTheDialog {

    CenterTheDialog() {
        int result = JOptionPane.showConfirmDialog(null, "Show over parent?");
        for (int ii=1; ii<4; ii++) {
            JFrame f = new JFrame("Frame " + ii);
            f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
            Component parent = (JOptionPane.OK_OPTION==result ? f : null);

            f.setSize(400,300);
            f.setLocationByPlatform(true);
            f.setVisible(true);

            JDialog d = new JDialog(f);
            d.setTitle("Dialog " + ii);
            d.setSize(300,200);
            d.setLocationRelativeTo(parent);
            d.setVisible(true);
        }
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                new CenterTheDialog();
            }
        });
    }
}