Java 多JFrame的使用:好的还是坏的做法?
我正在开发一个应用程序,它可以显示图像,播放数据库中的声音。我试图决定是否使用单独的JFrame从GUI向数据库添加图像 我只是想知道使用多个JFrame窗口是否是一种好的做法 我只是想知道使用多个JFrame是否是一种好的做法 坏的(坏的,坏的)习惯Java 多JFrame的使用:好的还是坏的做法?,java,swing,user-interface,jframe,Java,Swing,User Interface,Jframe,我正在开发一个应用程序,它可以显示图像,播放数据库中的声音。我试图决定是否使用单独的JFrame从GUI向数据库添加图像 我只是想知道使用多个JFrame窗口是否是一种好的做法 我只是想知道使用多个JFrame是否是一种好的做法 坏的(坏的,坏的)习惯 用户不友好:当用户希望只看到一个图标时,会在任务栏中看到多个图标。加上编码问题的副作用 编码和维护的噩梦: A提供了将注意力集中在该对话框内容上的简单机会-选择/修复/取消该对话框,然后继续。多个帧不存在 当点击父对象时,一个带有父对象的对话
- 用户不友好:当用户希望只看到一个图标时,会在任务栏中看到多个图标。加上编码问题的副作用
- 编码和维护的噩梦:
- A提供了将注意力集中在该对话框内容上的简单机会-选择/修复/取消该对话框,然后继续。多个帧不存在
- 当点击父对象时,一个带有父对象的对话框(或浮动工具栏)将出现在前面——如果这是所需的行为,您必须在框架中实现它
在一个GUI中显示多个元素有多种方式,例如:
- (简短)。有益于:
- 显示类似向导的对话框
- 显示具有关联组件的项目的列表、树等选择
- 在无组件和可见组件之间翻转
- 通常用于一种特殊用途
- 用于组件组
- 一种显示两个组件的方法,其中一个组件或另一个组件之间的重要性(大小)根据用户的操作而变化
- 许多分层良好的组件
- 通常包含多组操作或控件。可以在GUI中拖动,也可以完全根据用户需要将其从GUI中拉出。如上所述,将根据父级进行最小化/恢复
- 作为a中的项目(下面的简单示例)
- 作为网络中的节点
- .
JFrame
,然后使用该框架作为对话框的父对象,为其余自由浮动元素显示或实例
许多图像
在这种情况下,如果多个元素是图像,则最好使用以下任一项:
JLabel
(在滚动窗格中居中),用于显示用户当时感兴趣的任何图像。如中所示。JList
。如图所示。只有当它们的尺寸相同时,“单行”部分才起作用。或者,如果您准备动态缩放图像,并且它们的纵横比都相同(例如4:3或16:9)将jInternalFrame制作成主框架并使其不可见。然后,您可以将其用于其他事件
jInternalFrame.setSize(300,150);
jInternalFrame.setVisible(true);
绝对是坏习惯。一个原因是它不是很“用户友好”,因为每个
JFrame
都会显示一个新的任务栏图标。控制多个JFrame
s会让你毛骨悚然
就我个人而言,我会使用一个JFrame
用于您的应用程序。显示多种内容的方法由您决定,有很多种Canvas
es、JInternalFrame
、CardLayout
,甚至可能是JPanel
s
多个JFrame对象=痛苦、麻烦和问题。自从我上次触摸swing已经有一段时间了,但通常这样做是不好的做法。我想到的一些主要缺点:
- 成本更高:您必须分配更多的资源来绘制JFrame,而不是其他类型的窗口容器,如Dialog或JInternalFrame
- 对用户不友好:很难导航到一堆粘在一起的JFrame,看起来您的应用程序是一组不一致且设计糟糕的应用程序
- 使用JInternalFrame很容易这是一种反驳,现在它比我们已经思考过的桌面和JInternalFrame模式更容易,其他人也更聪明(或者有更多的空闲时间),所以我建议使用它
JFrame
方法一直是我实施的。在很大程度上,我一开始就这么做是因为我不知道还有什么更好的然而,随着我作为一名开发人员的经验和知识的成熟,以及我开始在线阅读和吸收更多经验丰富的Java开发人员的意见,我试图从多个JFrame
方法(无论是在当前项目还是未来项目中)中转移到,结果遇到了。。。得到这个。。。来自我客户的抵制!当我开始实施模态对话框来控制“子”窗口和独立组件的JInternalFrame
s时,我的客户开始抱怨我非常惊讶,因为我正在做我认为是最佳实践的事情!但是,正如他们所说,“幸福的妻子就是幸福的生活。”你的客户也是如此。当然,我是一个承包商,所以我的最终用户可以直接访问我,开发人员,这显然不是一个常见的场景
因此,我将解释多重JFrame
方法的好处,以及其他方法的一些缺点
JFrame
s,您可以让最终用户分散并控制屏幕上的内容。这个概念让人感觉“开放”且不受限制。当你走向一个大的JFrame
和一堆JInternalFrame
s时,你就失去了这一点