java - 获取对 JOptionPane 静态方法创建的对象的引用

标签 java swing joptionpane

我想知道是否有可能获得对由 JOptionPane 的静态方法之一(例如 showMessageDialog)创建的(JDialog?)对象的引用?我打算修改对话框在屏幕上出现的位置。更具体地说,我希望对话框默认出现在主应用程序窗口的左上角,而不是窗口的中心。因此,拥有对该对象的引用将使我能够使用 setLocation 来达到预期的效果......

如有任何建议,我们将不胜感激!谢谢!

最佳答案

静态showXXXDialog() 方法只是为了方便。如果您查看 JOptionPane 的源代码,您会发现实际上,一个 JOptionPane 对象是根据您指定的选项创建的,然后是 JOptionPane。 createDialog(...) 被调用。在不同位置显示消息对话框的一种方法是:

JOptionPane pane = new JOptionPane("Message", JOptionPane.WARNING_MESSAGE,
        JOptionPane.DEFAULT_OPTION);
JDialog dialog = pane.createDialog("TITLE");
dialog.setLocation(0, 0);
dialog.setVisible(true);

// dialog box shown here

dialog.dispose();
Object selection = pane.getValue();

结合 JOptionPane 构造函数和 JOptionPane set 方法的参数,您可以执行静态方法可以执行的任何操作,此外您还可以访问JDialog 对象本身。

已编辑:(为 OP 添加输入对话框示例)

JOptionPane pane = new JOptionPane("Message", JOptionPane.QUESTION_MESSAGE,
        JOptionPane.OK_CANCEL_OPTION, null, null, null);
pane.setWantsInput(true);
JDialog dialog = pane.createDialog(null, "Title");
dialog.setLocation(0, 0);
dialog.setVisible(true);

String str = (String) pane.getInputValue();

关于java - 获取对 JOptionPane 静态方法创建的对象的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4542924/

相关文章:

java - 如何在数组中添加项目?

java - 使用 JCreator 将行添加到 JTable

java - 如何制作一个圆圈的动画

java - 更新 JOptionPane 中的消息

java - Hibernate - 仅获取包含集合中元素的最新版本

java - 当Future.get()的返回值太大时,是否有替代解决方案?

Java:随着 Swing 的变化控制嵌入式面板的宽度

java - 设置 JOptionPane 中字符串值的格式

java - JOptionPane.showMessageDialog 必须退出两次

java - 用并行流替换嵌套 for 循环 - Java