代码之家  ›  专栏  ›  技术社区  ›  Amir Mohsen

为什么JOptionPane实例创建的消息未显示?

  •  1
  • Amir Mohsen  · 技术社区  · 10 月前

    我想在不使用静态方法的情况下显示消息 JOptionPane 类,这是一个使用对象的Java程序 JOptionPlane 类显示消息。

    import javax.swing.*;
    public class Sample {
        public  static void main(String[] args) {
            JOptionPane pane = new JOptionPane();
            pane.setMessage("Hello");
            pane.setOptionType(JOptionPane.OK_OPTION);
            pane.setName("Information");
            pane.setVisible(true);
        }
    }
    

    它预计会显示一条消息,但在编译和运行时不会显示任何结果。有什么问题吗?

    1 回复  |  直到 10 月前
        1
  •  2
  •   Hovercraft Full Of Eels    10 月前

    根据 JOptionPane API ,JOptionPane从JComponent扩展而来,因此JOptionPlane对象本身不是顶级窗口,因此本身不可见,即使 setVisible(true) 被称为。要从JOptionPane对象创建可见窗口,您必须从JOptionPlane对象创建JDialog。或者将其放置在最终显示在顶级窗口中的另一个容器中(根据任何JComponent类型对象)。例如,直接从API提升:

     JOptionPane pane = new JOptionPane(arguments);
     pane.set.Xxxx(...); // Configure
     JDialog dialog = pane.createDialog(parentComponent, title);
     dialog.setVisible(true);
    

    然而,在我看来,只使用静态方法在自己的JDialog中创建和显示JOptionPlane更简单、更好。