我正在开发一个显示图像的应用程序,并从数据库中播放声音。我正在尝试决定是否使用单独的JFrame从GUI向数据库添加图像。

我只是想知道使用多个JFrame窗口是否是好的实践?


当前回答

绝对是坏习惯。一个原因是它不是很“用户友好”,因为每个JFrame都显示一个新的任务栏图标。控制多个jframe会让你抓狂。

就我个人而言,我会为您的应用程序使用ONE JFrame。显示多个东西的方法取决于你,有很多。画布,JInternalFrame, CardLayout,甚至JPanels可能。

多个JFrame对象=痛苦、麻烦和问题。

其他回答

将jInternalFrame放入主框架中,并使其不可见。然后您可以将它用于进一步的事件。

jInternalFrame.setSize(300,150);
jInternalFrame.setVisible(true);

这是一段时间以来,我最后一次接触摇摆,但一般是一个坏的做法,这样做。我想到的一些主要缺点是:

It's more expensive: you will have to allocate way more resources to draw a JFrame that other kind of window container, such as Dialog or JInternalFrame. Not user friendly: It is not easy to navigate into a bunch of JFrame stuck together, it will look like your application is a set of applications inconsistent and poorly design. It's easy to use JInternalFrame This is kind of retorical, now it's way easier and other people smarter ( or with more spare time) than us have already think through the Desktop and JInternalFrame pattern, so I would recommend to use it.

我想用一个我刚刚涉及到的例子来反驳“不友好”的论点。

在我们的应用程序中,我们有一个主窗口,用户在其中运行不同的“程序”作为单独的选项卡。我们已经尽可能地将应用程序保持在这个单一窗口中。

他们运行的一个“程序”显示了系统生成的报告列表,用户可以单击每行上的图标弹出一个报告查看器对话框。这个查看器显示的内容相当于报告的A4页,所以用户喜欢这个窗口非常大,几乎填满了他们的屏幕。

几个月前,我们开始收到客户的请求,要求将这些报表查看器窗口变成非模态的,这样他们就可以同时打开多个报表。

有一段时间,我拒绝了这个要求,因为我认为这不是一个好的解决方案。然而,当我发现用户如何绕过我们系统的“缺陷”时,我的想法改变了。

他们打开一个查看器,使用“另存为”功能将报告保存为PDF文件到特定目录,使用Acrobat Reader打开PDF文件,然后他们会对下一个报告做同样的操作。他们将使用多个Acrobat reader运行他们想要查看的各种报告输出。

所以我妥协了,让观众变得无模态。这意味着每个查看器都有一个任务栏图标。

上周,当最新版本发布给他们时,他们压倒性的反应是他们喜欢它。这是我们最近对系统最受欢迎的改进之一。

所以你继续告诉你的用户,他们想要的东西是不好的,但最终它不会给你任何好处。

一些注意事项:

对于这些非模态窗口,使用JDialog似乎是最佳实践 使用使用新ModalityType而不是布尔模态参数的构造函数。这就是为这些对话框提供任务栏图标的原因。 对于非模态对话框,向构造函数传递一个空的父窗口,但定位它们相对于它们的“父”窗口。 Windows上的Java版本6有一个错误,这意味着你的主窗口可能会在你不告诉它的情况下变得“总是在顶部”。升级到版本7可以解决这个问题

我认为使用多个jframe不是一个好主意。

相反,我们可以在同一个JFrame中使用多个JPanel。

我们还可以在这些jpanel之间切换。它给了我们在JFrame中显示更多东西的自由。

对于每个JPanel,我们可以设计不同的东西,所有这些JPanel都可以一次显示在单个JFrameone上。

要在这个jpanel之间切换,使用JMenuBar和JMenuItems为每个JPanelor 'JButtonfor每个jpanel '。

多于一个JFrame不是一个好的实践,但是如果我们想要多于一个JFrame也没有什么问题。

但是根据不同的需求更改一个JFrame比使用多个JFrame更好。

绝对是坏习惯。一个原因是它不是很“用户友好”,因为每个JFrame都显示一个新的任务栏图标。控制多个jframe会让你抓狂。

就我个人而言,我会为您的应用程序使用ONE JFrame。显示多个东西的方法取决于你,有很多。画布,JInternalFrame, CardLayout,甚至JPanels可能。

多个JFrame对象=痛苦、麻烦和问题。