多个 JFrame 的使用:好还是坏实践? [关闭]

2024-02-23

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

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


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

坏(坏,坏)做法。

  • 用户不友好:当用户希望只看到一个图标时,却在任务栏中看到了多个图标。再加上编码问题的副作用..
  • A nightmare to code and maintain:
    • A 模态对话框 http://docs.oracle.com/javase/tutorial/uiswing/misc/modality.html提供了将注意力集中在该对话框内容上的简单机会 - 选择/修复/取消此对话框,then继续。多帧则不然。
    • 当单击父级时,带有父级的对话框(或浮动工具栏)将出现在前面 - 如果这是所需的行为,则必须在框架中实现它。

在一个 GUI 中显示许多元素的方法有很多种,例如:

  • CardLayout http://docs.oracle.com/javase/tutorial/uiswing/layout/card.html (short demo. https://stackoverflow.com/a/5786005/418556). Good for:
    1. 显示类似向导的对话框。
    2. 显示具有关联组件的项目的列表、树等选择。
    3. 在无组件和可见组件之间翻转。
  • JInternalFrame/JDesktopPane http://docs.oracle.com/javase/tutorial/uiswing/components/internalframe.html通常用于MDI http://en.wikipedia.org/wiki/Multiple_document_interface.
  • JTabbedPane http://docs.oracle.com/javase/tutorial/uiswing/components/tabbedpane.html对于组件组。
  • JSplitPane http://docs.oracle.com/javase/tutorial/uiswing/components/splitpane.html一种显示两个组件的方式,其中一个或另一个组件之间的重要性(大小)根据用户正在执行的操作而变化。
  • JLayeredPane http://docs.oracle.com/javase/tutorial/uiswing/components/layeredpane.html许多良好的..分层组件。
  • JToolBar http://docs.oracle.com/javase/tutorial/uiswing/components/toolbar.html通常包含多组操作或控件。可以在 GUI 周围拖动,或者根据用户需要完全关闭它。如上所述,将根据父级的操作最小化/恢复。
  • 作为 a 中的项目JList http://docs.oracle.com/javase/tutorial/uiswing/components/list.html(下面是简单的例子)。
  • 作为 a 中的节点JTree http://docs.oracle.com/javase/tutorial/uiswing/components/tree.html.
  • Nested layouts https://stackoverflow.com/a/5630271/418556.

但如果这些策略不适用于特定用例,请尝试以下方法。建立单一主JFrame,则有JDialog http://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html or JOptionPane http://docs.oracle.com/javase/tutorial/uiswing/components/dialog.html#features使用框架作为对话框的父级,为其余自由浮动元素显示实例。

许多图像

在这种情况下,多个元素是图像,最好使用以下任一选项:

  1. A single JLabel (centered in a scroll pane) to display whichever image the user is interested in at that moment. As seen in ImageViewer https://stackoverflow.com/a/13463684/418556.
  2. 单排JList。正如所见这个答案 https://stackoverflow.com/a/9544652/418556。仅当它们的尺寸相同时,“单行”部分才有效。或者,如果您准备动态缩放图像,并且它们都是相同的宽高比(例如 4:3 或 16:9)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

多个 JFrame 的使用:好还是坏实践? [关闭] 的相关文章

随机推荐

  • 如何在本地测试并发?

    本地测试并发的最佳方法是什么 即我想测试 10 个并发点击 我知道类似的服务Blitz http blitz io 然而 我试图找到一种更简单的方法在本地进行测试以对抗竞争条件 有任何想法吗 也许通过卷曲 查看 Apache Bench a
  • 如何从 csv 文件读取表格中的文本

    我是新使用 tm 包 我想读取一个 csv 文件 其中一列包含 2000 个文本 第二列包含因子变量 yes no 到语料库中 我的目的是将文本转换为矩阵并使用因子变量作为预测目标 我还需要将语料库划分为训练集和测试集 我阅读了一些文档 例
  • GROUP BY 子句在 sqlite 中获取逗号分隔值

    我的表结构是这样的 使用sqlite3 CREATE TABLE enghindi eng TEXT hindi TEXT 我有一张名为enghindi其中有两列名为hindi eng 我想合并 eng 列的记录 并通过逗号分隔合并印地文单
  • 如果没有人调用interrupt(),可以忽略InterruptedException吗?

    如果我创建自己的线程 即不是线程池 并且在某个地方调用sleep或任何其他可中断方法 是否可以忽略 InterruptedException如果我知道代码中没有其他人在线程上进行中断 换句话说 如果线程的寿命应该与 JVM 一样长 这意味着
  • 如何让 PHP SOAP 客户端与使用无效证书通过 SSL 运行的服务进行通信

    我尝试使用 PHP SOAP 客户端使用 SOAP 服务 但失败并显示以下消息 SoapFault SOAP ERROR Parsing WSDL Couldn t load from https domain com webservice
  • MathJax 渲染模糊

    MathJax http www mathjax org 在浏览器中的渲染 右 比在 LaTeX 中的等效 PDF 渲染 左 要模糊得多 这是 Javascript 限制 浏览器限制 MathJax 限制 错误 设计原因还是其他原因 有什么
  • 创建 AMI 映像作为 cloudformation 堆栈的一部分

    我想创建一个 EC2 cloudformation 堆栈 基本上可以按以下步骤描述 1 启动实例 2 配置实例 3 停止实例并从中创建 AMI 映像 4 使用创建的 AMI 映像作为源创建自动缩放组以启动新实例 基本上我可以在一个 clou
  • 当我需要转义 Html 字符串时?

    在我的遗留项目中 我可以在字符串发送到浏览器之前看到 escapeHtml 的用法 StringEscapeUtils escapeHtml stringBody 我从 api 文档知道 escapeHtml 的作用 这里是给出的示例 Fo
  • 构建 Mac 和 Windows GUI 应用程序

    我计划为 Mac 和 Windows 构建一个 GUI 应用程序 我一直在技术选择方面进行一些研究 例如语言 库和构建工具 以便我可以在两个平台之间共享尽可能多的代码 主要要求是 满足 Mac App Store 要求 Mac 和 Wind
  • C# 对象类型比较

    如何比较声明为类型的两个对象的类型 我想知道两个对象是否属于同一类型或来自同一基类 任何帮助表示赞赏 e g private bool AreSame Type a Type b Say a and b是两个对象 如果你想看看是否a and
  • QFormLayout 中的 QSpacerItem - 垂直展开

    我想在我的内心拓展一个空间QFormLayout 但无论如何QFormLayout仅使用QSpaceItem sizeHint 有谁知道解决这个问题的方法 或者处理这个问题的正确方法 MyWidget MyWidget QWidget pa
  • Kinesis 分区键始终位于同一个分片中

    我有一个包含 2 个分片的运动流 如下所示 StreamDescription StreamStatus ACTIVE StreamName my stream Shards ShardId shardId 000000000001 Has
  • fullcalendar jquery 插件标题字符串中的 HTML

    我认为 fullcalendar jquery plugin 是一个非常好的解决方案 但是 我注意到插件转义了 htmlEscape 标题 但我需要格式化标题中的一些字符串 例如粗体文本 颜色或小图像 使用另一个插件 例如 qTip 如示例
  • 陷入 Gradle Build 运行状态

    当尝试在 Android Studio 2 1 在 Ubuntu 16 04 上 上构建我的应用程序时 它陷入了以下注释 Executing tasks app generateDebugSources app mockableAndroi
  • Helm:从键可变的 Map 中获取值

    我有一个舵图如下 dns entries cluster1 xx xx xx xx cluster2 xx xx xx xx 安装 Helm Chart 时 集群值也会动态设置 在模板中 我需要从上面的地图中动态选择它 if hasKey
  • 为什么我可以使用 nullptr 而不包含 STL?

    The C nullptr属于类型std nullptr t 为什么一个程序喜欢 int main int ptr nullptr 仍然可以工作 尽管它不包含任何 STL 库 在C 11中他们想添加一个关键字来替换宏NULL 基本上定义为
  • 使用 Cromis IPC 进行双向通信

    我已经下载并玩了克罗米斯工控机 http www cromis net blog 2009 11 cromis ipc fast inter process communication named pipes 来自 Iztok Kacin
  • 比较字符串(文字和数字)的最快方法

    我有一个与字符串比较 Java 中 相关的性能问题 我正在开发一个需要对巨大列表进行排序的项目 Eclipse 中的 TableViewer 无论如何 我已经将瓶颈定位到对要比较的字符串的compareTo 的调用 有什么方法可以优化字符串
  • C#:使用通用字典 保存混合类型的设置并返回正确的值和类型转换

    我正在尝试实现一个类 以优雅且易于维护的方式保存用户设置 有一个广泛的可能设置列表 其中包含多种类型的设置 int double string 等 我试图使用字典 但由于我的类型是混合的 所以我使用通用对象类型作为键返回值 我还有另一个字典
  • 多个 JFrame 的使用:好还是坏实践? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在开发一个显示图像并播放数据库中的声音的应用程序 我正在尝试决定是否使用单独的 JFrame 从 GUI 将图像添加到数据库中 我只是想知道