【问题标题】:How to convert a JOptionPane to a JDialog如何将 JOptionPane 转换为 JDialog
【发布时间】:2014-04-06 20:26:16
【问题描述】:

我需要将 JOptionPage 转换为 JDialog,因为我需要摆脱那个古怪的“确定”按钮。下面是代码...

JOptionPane.showMessageDialog(null, Interface, caption, JOptionPane.WARNING_MESSAGE, icon);

界面是我的 GUI,“标题”是标题,然后我有一条警告消息,然后我有我的自定义图标。

对于给定的信息,这甚至可能是不可能的,但我真的需要摆脱它。任何帮助将不胜感激。

【问题讨论】:

  • 为什么不简单地创建一个 JDialog 而不经过 JOptionPane 步骤?
  • 好吧,我已经编写了整个 JOptionPane。我不确定这样做的唯一方法是否是返回并以 JDialog 格式重新创建整个代码,但如果我不必这样做,那就太好了。
  • "Well I've already coded the entire JOptionPane..." -- 见鬼,最多只有两行代码。我支持我的相同建议。
  • 如果Interface(应该命名为interface)是一个JPanel,那么只需把它放在你的JDialog的contentPane中。无需创建扩展 JDialog 的类。只需将您的 JPanel 合二为一。
  • 哈哈好吧,也许我说错了。显然 JOptionPane 很小,但要做一个 JDialog 我必须创建一个 Window 和更多的东西。 GUI 已经创建,我可以简单地将其导入 JOptionPane。对于我相信的 JDialog 无法做到这一点。

标签: java swing joptionpane jdialog


【解决方案1】:

为什么不简单地创建一个 JDialog 并将您的界面对象放入它的 contentPane 中,然后打包并显示它。很简单。


你说:

显然 JOptionPane 很小,但要创建 JDialog 我必须创建一个 Window 和更多的东西。 GUI 已经创建,我可以简单地将其导入 JOptionPane。对于我相信的 JDialog 无法做到这一点。

我很困惑。 “GUI”是什么意思?同样,如果它是 JPanel,同样,只需将其放入您的 JDialog 中。

例如,如果在 ActionListener 中

public void actionPerformed(ActionEvent e) {
  // assuming this is being called from within a JFrame named myFrame
  JDialog dialog = new JDialog(myFrame, "Dialog Title", ModalityType.APPLICATION_MODAL);
  dialog.getContentPane().add(interface);
  dialog.pack();
  dialog.setLocationRelativeTo(myFrame);
  dialog.setVisible(true);
}

另一种选择是使用 JOptionPane 构造函数,并在不显示的情况下创建它,然后将其转换为 JDialog,因为 JOptionPane API 向您展示了如何操作,但您可能仍然需要处理 OK 或类似按钮。

【讨论】:

  • 好吧,让我测试一下,看看结果如何。
  • 好的,做到了!由于可见性设置,我感到困惑。 JOptionPane 不必设置为 true。非常感谢,我会尽快接受您的回答。 :)
  • @user3010468: 是的,您可以使用 JOptionPane 构造函数并在不显示的情况下创建它,然后将其转换为 JDialog,因为 JOptionPane API 向您展示了如何操作,但您可能仍然有 OK 或类似的按钮来处理。
猜你喜欢
  • 2012-03-08
  • 2013-02-11
  • 1970-01-01
  • 2019-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-14
  • 2019-10-19
相关资源
最近更新 更多