gpt4 book ai didi

java - JDialog、JOptionPane 和 JPanel 显示消息

转载 作者:行者123 更新时间:2023-12-02 02:59:36 25 4
gpt4 key购买 nike

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

  1. 当用户点击“添加”按钮时,由于 TCP 连接,需要相对较长的时间。我正在使用 JPanel 向用户显示“正在处理...”。当用户单击“添加”按钮时,我更改包含“处理...”消息的面板的 setVisible(true)

  2. 正确添加后,我会以相同的方式向用户显示一条消息“已添加” (setVisible)

  3. 当用户输入错误时,我会以相同的方式显示一条消息。

为此,我创建了不同的面板,并根据我的设计对其进行了自定义。但是当我使用 JDialogJOptionPane 时,我无法完全自定义。

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

最佳答案

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

JDialog 是一个通用对话框,可以通过添加其他组件来自定义。 (有关更多信息,请参阅 How to add components to JDialog)

JOptionPane 可以被认为是一个特殊用途的对话框。来自 javadoc (强调):

JOptionPane makes it easy to pop up a standard dialog box that prompts users for a value or informs them of something.

如果您深入研究 JOptionPane 的源代码,您会发现 showInputDialog() 等方法实际上创建了一个 JDialog,然后填充它与 JOptionPane

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.showConfirmDialog() 来确认已添加用户。

在应用程序的思考时间内,您可能想要配对 progress bar使用 JDialog 让用户知道系统正在工作。

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

关于java - JDialog、JOptionPane 和 JPanel 显示消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42538542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com