【问题标题】:How to do a custom JoptionPane如何做一个自定义的 JoptionPane
【发布时间】:2014-03-03 20:45:46
【问题描述】:

我需要用一个 JTextField 和两个 RadioButtons 做一个 JOptionPane(或类似的东西),但我不知道这是否可能。我有一个带有不同选项的主框架,当我单击“操作”时,我应该调用该对话框。如何制作该对话框?

【问题讨论】:

  • 使用扩展 JDialog 的类。使用 .setModal(true) 将其设置为模态,然后将其显示给用户。你可以设计它的 init 方法来构建它,不管你喜欢什么,它的行为就像一个 JOptionPane,假设你公开了一个类似 .getDialogResult() 的东西,它根据他们点击的内容返回真/假,还有一个 .getValue()它返回用户输入数据。

标签: java eclipse swing dialog joptionpane


【解决方案1】:

一个文本字段和两个单选按钮应该足够小以适合 JOptionPane,所以最好继续使用它。

将带有两个单选按钮的 JTextField 添加到 JPanel,并将该 JPanel 添加为 JOptionPane 中显示的组件。可能希望使用仅显示“确定”的选项窗格,其中一个单选按钮已被选中。

为了安全起见,您可能希望将该 JPanel 包装在 JScrollPane 中,因为我不认为 JOptionPanes 是可重新调整大小的,并且取决于用户是否通过命令行选项或可访问性设置更改您的外观和感觉,那么您可能从它们中删除一些 GUI 组件。

【讨论】:

  • 滚动窗格应该不是必需的 - 列出的组件应该 pack() 很好(JOptionPane 每次显示时都会为您服务)
  • 仅供参考:稍微调整一下JOptionPane 可以调整大小:op = new JOptionPane(...)dlg = op.createDialog();dlg.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);,最后:dlg.setResizable(true);dlg.pack();
【解决方案2】:

就我个人而言,我不喜欢为此使用 JOptionPane。继续使用 JDialog。

可以这么简单:

        JPanel innerPanel = new JPanel(new FlowLayout());
        // Add components and listeners here

        JDialog dialog = new JDialog();
        dialog.add(innerPanel);
        dialog.setModal(true);
        dialog.pack();
        dialog.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

        dialog.setVisible(true);
        dialog.addWindowListener(new WindowAdapter()
        {
            @Override
            public void windowClosing (WindowEvent e)
            {
                super.windowClosing(e);
            }
        });

【讨论】:

  • 我在我的项目中添加了一个 JDialog 并对其进行了配置,但我不知道如何从 JFrame 调用 JDialog,我需要将一个变量从框架传递给对话框。我正在使用带有 Window Builder 插件的 Eclipse,它为包中的每个组件创建一个类。我觉得我解释得不好。
  • 我不熟悉 Window Builder。希望它有一种插入您自己的自定义逻辑的方法。在 JFrame 自定义逻辑中,您需要创建 Dialog。类似MyJDialog mydiaolog = new MyJDialog();
  • 好的,我试试。我正在使用界面进行所有自动操作。我将执行对话框并复制代码。谢谢你。
猜你喜欢
  • 2019-05-02
  • 1970-01-01
  • 2011-01-06
  • 1970-01-01
  • 1970-01-01
  • 2012-08-27
  • 2013-01-13
  • 2011-05-12
  • 1970-01-01
相关资源
最近更新 更多