Java 如何创建自定义作业窗格

Java 如何创建自定义作业窗格,java,eclipse,swing,dialog,joptionpane,Java,Eclipse,Swing,Dialog,Joptionpane,我需要用一个JTextField和两个单选按钮来做一个JOptionPane(或类似的东西),但我不知道这是否可行。我有一个带有不同选项的主框架,当我点击“Operacion”时,我应该调用对话框。如何创建该对话框?一个文本字段和两个单选按钮应该足够小,可以放入JOptionPane,所以最好继续使用它 将带有两个单选按钮的JTextField添加到JPanel,并将该JPanel添加为JOptionPane中显示的组件。可能希望使用仅显示“确定”的选项窗格,其中一个单选按钮已选中 为了安全起见

我需要用一个JTextField和两个单选按钮来做一个JOptionPane(或类似的东西),但我不知道这是否可行。我有一个带有不同选项的主框架,当我点击“Operacion”时,我应该调用对话框。如何创建该对话框?

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

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


为了安全起见,您可能希望将该JPanel包装在JScrollPane中,因为我认为JoptionPane无法重新调整大小,这取决于用户是否通过命令行选项或可访问性设置更改了您的外观,然后您可能会从中删除一些GUI组件。

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

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


为了安全起见,您可能希望将该JPanel包装在JScrollPane中,因为我认为JoptionPane无法重新调整大小,这取决于用户是否通过命令行选项或可访问性设置更改了您的外观,然后您可能会从中断开一些GUI组件。

,我不喜欢使用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);
            }
        });

就我个人而言,我不喜欢使用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的类。使用.setModal(true)将其设置为modal,然后将其显示给用户。您可以设计它的init方法以任意方式构建它,它的行为就像JOptionPane,假设您公开了.getDialogResult()和.getValue()之类的内容,前者根据单击的内容返回true/false,后者返回用户输入数据。查看本教程:使用扩展JDialog的类。使用.setModal(true)将其设置为modal,然后将其显示给用户。您可以设计它的init方法以任意方式构建它,它的行为就像JOptionPane一样,假设您公开了.getDialogResult()之类的内容,它根据单击的内容返回true/false,以及.getValue()它返回用户输入数据。我在项目中添加了一个JDialog并对其进行了配置,但我不知道如何从JFrame调用JDialog,我需要将一个变量从frame传递到对话框。我正在使用带有WindowBuilder插件的Eclipse,它为包中的每个组件创建一个类。我想我解释得不好。我对Window Builder不熟悉。希望它能插入您自己的自定义逻辑。在JFrame自定义逻辑中,您需要创建对话框。类似于
MyJDialog mydialog=newmyjdialog()好的,我试试看。我在用界面做全自动的。我将执行对话框并复制代码。谢谢你,伙计。我在我的项目中添加了一个JDialog,并对它进行了配置,但我不知道如何从JFrame调用JDialog,我需要从frame向对话框传递一个变量。我正在使用带有WindowBuilder插件的Eclipse,它为包中的每个组件创建一个类。我想我解释得不好。我对Window Builder不熟悉。希望它能插入您自己的自定义逻辑。在JFrame自定义逻辑中,您需要创建对话框。类似于
MyJDialog mydialog=newmyjdialog()好的,我试试看。我在用界面做全自动的。我将执行对话框并复制代码。谢谢你,伙计。滚动窗格应该是不必要的-列出的组件应该
pack()
很好(每次显示时
JOptionPane
都会为你做)。仅供参考:通过一些杂耍
JOptionPane
可以调整大小:
op=newjoptionpane(…)
dlg=op.createDialog()
dlg.setDefaultCloseOperation(JDialog.DISPOSE\u ON\u CLOSE)和最后:
dlg.setresizeable(true)
dlg.pack()滚动窗格应该是不必要的-列出的组件应该
pack()
很好(每次显示它时,
JOptionPane
都会为您提供)仅供参考:通过一些杂耍
JOptionPane
可以调整大小:
op=newjoptionpane(…)
dlg=op.createDialog()
dlg.setDefaultCloseOperation(JDialog.DISPOSE\u ON\u CLOSE)和最后:
dlg.setresizeable(true)
dlg.pack()