Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 多JFrame的使用:好的还是坏的做法?_Java_Swing_User Interface_Jframe - Fatal编程技术网

Java 多JFrame的使用:好的还是坏的做法?

Java 多JFrame的使用:好的还是坏的做法?,java,swing,user-interface,jframe,Java,Swing,User Interface,Jframe,我正在开发一个应用程序,它可以显示图像,播放数据库中的声音。我试图决定是否使用单独的JFrame从GUI向数据库添加图像 我只是想知道使用多个JFrame窗口是否是一种好的做法 我只是想知道使用多个JFrame是否是一种好的做法 坏的(坏的,坏的)习惯 用户不友好:当用户希望只看到一个图标时,会在任务栏中看到多个图标。加上编码问题的副作用 编码和维护的噩梦: A提供了将注意力集中在该对话框内容上的简单机会-选择/修复/取消该对话框,然后继续。多个帧不存在 当点击父对象时,一个带有父对象的对话

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

我只是想知道使用多个JFrame窗口是否是一种好的做法

我只是想知道使用多个JFrame是否是一种好的做法

坏的(坏的,坏的)习惯

  • 用户不友好:当用户希望只看到一个图标时,会在任务栏中看到多个图标。加上编码问题的副作用
  • 编码和维护的噩梦:
    • A提供了将注意力集中在该对话框内容上的简单机会-选择/修复/取消该对话框,然后继续。多个帧不存在
    • 当点击父对象时,一个带有父对象的对话框(或浮动工具栏)将出现在前面——如果这是所需的行为,您必须在框架中实现它

在一个GUI中显示多个元素有多种方式,例如:

  • (简短)。有益于:
  • 显示类似向导的对话框
  • 显示具有关联组件的项目的列表、树等选择
  • 在无组件和可见组件之间翻转
  • 通常用于一种特殊用途
  • 用于组件组
  • 一种显示两个组件的方法,其中一个组件或另一个组件之间的重要性(大小)根据用户的操作而变化
  • 许多分层良好的组件
  • 通常包含多组操作或控件。可以在GUI中拖动,也可以完全根据用户需要将其从GUI中拉出。如上所述,将根据父级进行最小化/恢复
  • 作为a中的项目(下面的简单示例)
  • 作为网络中的节点
  • .
但是如果这些策略不适用于特定用例,请尝试以下方法。建立单个main
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模式更容易,其他人也更聪明(或者有更多的空闲时间),所以我建议使用它


    自从我开始编写Swing应用程序以来,多重
    JFrame
    方法一直是我实施的。在很大程度上,我一开始就这么做是因为我不知道还有什么更好的然而,随着我作为一名开发人员的经验和知识的成熟,以及我开始在线阅读和吸收更多经验丰富的Java开发人员的意见,我试图从多个
    JFrame
    方法(无论是在当前项目还是未来项目中)中转移到,结果遇到了。。。得到这个。。。来自我客户的抵制!当我开始实施模态对话框来控制“子”窗口和独立组件的
    JInternalFrame
    s时,我的客户开始抱怨我非常惊讶,因为我正在做我认为是最佳实践的事情!但是,正如他们所说,“幸福的妻子就是幸福的生活。”你的客户也是如此。当然,我是一个承包商,所以我的最终用户可以直接访问我,开发人员,这显然不是一个常见的场景

    因此,我将解释多重
    JFrame
    方法的好处,以及其他方法的一些缺点

  • 布局上的最大灵活性-通过允许单独的
    JFrame
    s,您可以让最终用户分散并控制屏幕上的内容。这个概念让人感觉“开放”且不受限制。当你走向一个大的
    JFrame
    和一堆
    JInternalFrame
    s时,你就失去了这一点
  • 适用于非常模块化的应用程序——在我的例子中,我的大多数应用程序都有3-5个大的“模块”,它们之间根本没有任何关系。例如,一个模块可能是销售仪表板,另一个可能是