【发布时间】:2012-01-05 18:04:33
【问题描述】:
首先,我会提出问题,然后我会解释应用程序。
如何让JFrames 表现得像JOptionPanes? (tutorial didn't help) 即
[Show content >> return a value]。另外我需要它是
[Show the frame >> Ask information >> Modify an object passed as parameter to the constructor >> return something]
我已经让“确定”按钮得到我想要的答案(在控制台中显示),但我不知道在哪里放置 return 语句
我希望函数类似于
public static String getAnswer(Args, Answer)
Args,可能包含字段名称、数据类型、最大长度和
Answer,是要修改的对象,用户给出信息后点击“确定”
总是有争论和答案。例如(看截图,看看我需要如何显示“最复杂”类型的消息,虽然它不完整,因为它需要根据数据类型显示不同类型的组件)。
| Arg | Answer |
--------------------------------------
| Type | fldName | |
--------------------------------------
| int | Age: | 22 |
| String | Name: | Roger |
| Date | Birth: | 31/10/1989 |
到目前为止,我所做的是显示一个带有所需内容的 JFrame(即对话框)并制作一个按钮以在控制台中显示答案。
如何构建 JFrame?我有 4 个类,其中三个类在屏幕截图下方描述,最后一个类构建一个包含其他三个面板的 JPanel 并将其添加到 JFrame。如果你想看代码click。
为什么我不使用 JDialog,因为它需要一个我没有的父框架。我需要从另一个非 java 应用程序中显示它,所以它必须已经是顶部框架。
您可能不想阅读此内容,但如果您有兴趣阅读我正在做的事情,请继续阅读:
我知道,通过使用JOptionPane.showMessageDialog() 等,我的问题可能会得到解决,但我无法弄清楚它是否适合我的需求。 JOptionPane 上显示的内容似乎仅限于我,我不知道如何保持控制或引用我放入其中的孩子,一切都会改变它的行为。
我必须创建五个不同的对话框,将值返回给另一个应用程序(痛苦的 oracle 表单 6i)。对话框的类型有:
- 打印对话框,显示打印机列表或“导出到文件”选项
- 消息对话框,显示 html 内容(如电子邮件预览)并带有“确定”按钮。
- 是/否对话框,要求用户确认,类似于消息对话框。
- 参数形式,要求用户给出一些信息,它要求的信息,是基于一个select或者一个字符串数组。
- 值列表,基于 select 语句,显示结果,就像 plsql 开发人员所做的那样。
这是最后一项(Parameter form)的截图,在示例中,每一项都是月份类型,答案将填充其值。
如您所见,框架被 3 个块划分(我将它们分为 3 个类 TopPanel、MidPanel 和 BotPanel):分别为消息对话框、用户输入和命令按钮。
TopPanel,从 JScrollPane 扩展并创建一个 JEditorPane,因为它可能显示 html 内容
MidPanel,从 JScrollPane 扩展而来(这个,只为列表中的最后两个对话框创建),并基于表单作为参数传递给用户的对象创建字段,输入到 this,需要在java中进行检查,因为它可以是日期、文本字段或基于select语句的组合框(图中,根据对数据库的查询,有一年中的12个月)。
BotPanel 可以控制 java 对表单的回答,例如参数列表或是/否对话框的回答。该面板会随着各种对话而变化。例如对于是/否对话框,它具有“是”和“否”按钮,这将使 java 返回 true 或 false,但对于参数表单对话框,如果发生,它将返回错误消息,并且 Object 包含以下信息用户选择。
【问题讨论】:
-
JDialog没有父母是可能的 - see this SO question -
为什么不简单地将复杂的 GUI/JPanel 放入 JOptionPane 中?
-
@HovercraftFullOfEels 你觉得太复杂了吗?我应该改变模型吗?我认为它很简单,例如
mainPanel{Top{message}, Mid{changingContent}, Bot{changinContent}}有没有更简单的解决方案?我不是经验丰富的程序员。谢谢。 -
@Roger:不,它并不太复杂,一点也不。在下面运行我的示例,您可以看到使用 JOptionPane 可以轻松完成。
标签: java swing modal-dialog