当前位置: 首页 > 知识库问答 >
问题:

显示消息的JDialog与JOptionPane与JPanel

萧德馨
2023-03-14

我正在用Java Swing开发一个应用程序,有时我需要在这些情况下显示消息:

>

  • 当用户点击“添加”按钮时,由于TCP连接,需要较长的时间。我正在使用JPanel来显示“processing...”致用户。当用户单击“添加”按钮时,我会更改面板的setvisible(true),其中包含“processing...”消息。

    我想问,这是一个错误的做法吗?它是否会导致性能和可视化问题?我应该使用JoptionPane还是JDialog来实现这些过程?

  • 共有1个答案

    秦时铭
    2023-03-14

    JPanel只是用于容纳其他组件的容器

    jdialog是一个通用对话框,可以通过添加其他组件进行定制。(有关这方面的更多信息,请参见如何向JDialog添加组件)

    JoptionPane可以看作是一个特殊用途的对话框。从javadoc(加了重点):

    public static Object showInputDialog(Component parentComponent,
        Object message, String title, int messageType, Icon icon,
        Object[] selectionValues, Object initialSelectionValue)
        throws HeadlessException {
        JOptionPane    pane = new JOptionPane(message, messageType,
                                              OK_CANCEL_OPTION, icon,
                                              null, null);
    
        pane.setWantsInput(true);
        pane.setSelectionValues(selectionValues);
        pane.setInitialSelectionValue(initialSelectionValue);
        pane.setComponentOrientation(((parentComponent == null) ?
            getRootFrame() : parentComponent).getComponentOrientation());
    
        int style = styleFromMessageType(messageType);
        JDialog dialog = pane.createDialog(parentComponent, title, style);
    
        pane.selectInitialValue();
        dialog.show();
        dialog.dispose();
    
        Object value = pane.getInputValue();
    
        if (value == UNINITIALIZED_VALUE) {
            return null;
        }
        return value;
    }
    

    如果您发布示例代码,这里的社区成员可能会就如何在应用程序中最好地利用这些组件给您提供更具体的指导。

     类似资料:
    • 我希望JOptionPane出现在非模态对话框上面。例如,在下面的应用程序中,请按< code>JDialog按钮以显示无模式对话框,然后按< code>JOptionPane按钮以显示JOptionPane确认对话框。不幸的是,JOptionPane出现在非模态对话框下。 在我的真实应用中,我有几个非模态的JDialogs,我从几个不同的地方使用JOptionPane。 如何轻松地让JOptio

    • 问题内容: 在对话框上使用setVisible(false)并在以后重用它是否有意义,还是每次调用dispose()并创建新的JDialog更为安全。用setVisible(false)处理内存泄漏怎么办? 编辑:我的问题不是关于退出应用程序。有关以主框架为父框架并在应用程序生命周期中打开和关闭的对话框的更多信息。例如,假设我的应用程序大约有10个对话框,这些对话框每次打开时都会显示不同的数据。我

    • 图形与显示 [AGP] agp={off|try_unsupported} off 表示关闭内核的AGP(CONFIG_AGP)支持; try_unsupported 表示尝试驱动那些不受支持的芯片(可能会导致系统崩溃或数据错误) [HW,DRM] gamma=浮点数 设置显示器的Gamma值。 video.brightness_switch_enabled={0|1} [背景知识]如果ACPI

    • ATM:自动取款机。 1回到第4章,我举了一个使用消息传递框架在线程间发送信息的例子。这里就会使用这个实现来完成ATM功能。下面完整代码就是功能的实现,包括消息传递框架。 清单C.1实现了一个消息队列。其可以将消息以指针(指向基类)的方式存储在列表中;指定消息类型会由基类派生模板进行处理。推送包装类的构造实例,以及存储指向这个实例的指针;弹出实例的时候,将会返回指向其的指针。因为message_b