当前位置: 首页 > 面试题库 >

如何构建Swing应用程序

毛德华
2023-03-14
问题内容

对于这个问题,我实际上并没有太多的摆动或GUI设计方面的经验(大学中的一些WPF应用程序的水平差不多),但是我的任务是在工作中重构摆动旧式应用程序的一部分。

我被要求重构的部分围绕一个弹出窗口,该窗口可以根据特定的值对象以三种不同的格式显示。这3种不同的格式都共享一些基本字段,然后有条件地确定其他字段。负责此GUI元素的类的长度约为5k,我当时认为应该将其分为三个子类,并在基类中共享这些内容,并扩展它们。但是,我绝对不知道这是否是正确的方法。

谁能强调一些用于处理不同挥杆部件的策略,这些部件共享诸如按钮/区域等元素?

此外,是否有任何大型OSS swing应用程序可用于学习?

更多信息:我正在处理的应用程序是一个大型的遗留应用程序,目前该结构相当糟糕。我是该团队的新手(并且是一个刚毕业的研究生,所以在这一领域没有太多经验),并且被要求尝试分解其中一个负责显示此弹出窗口的庞大类之一分成更小的,更易于维护的组件。本质上,应用程序中有一个弹出窗口,允许用户响应某些事件,并且弹出窗口具有三种不同的外观,具体取决于他们需要响应的请求的子类型。GUI元素的大部分在所有这三个子类型中都是一致的,因此我很想知道继承是否是最好的方法,或者是否有其他策略可以处理?


问题答案:

阅读评论,我想我可以回答这个问题。正确的答案需要一本书。

  1. 将您的GUI分解为JPanel描述GUI所需的尽可能多的nested 。嵌套一个简单的JPanel一个使用BorderLayout是优选的复杂JPanel,它使用一个GridBagLayout。明确地说,我并不是在批评GridBagLayout。在创建表单时很有用。但这不是唯一的Swing布局管理器。

  2. 将每个嵌套JPanel到自己的类中。

  3. 使用Swing组件时,请使用合成。仅当您的类将覆盖JComponent方法之一时,才使用继承。

  4. 每一个JPanel都有自己的JButtonJLabel等部分组成。 即使GUI用户认为它们是相同的按钮,也JBUttonJPanelA 定义A,JButtonJPanelB 定义B。您可以通过创建包含标签和按钮的文本的GUI模型来最大程度地减少重复。你必须通过编写共同消除的动作代码(按下按钮当这样执行的代码)重复ActionListeners表示JButton一个和JButtonB可执行。

  5. Swing应用程序 必须 以调用开始SwingUtilities.invokelater()。这样可以确保在事件调度线程(EDT)上定义和使用Swing组件。

  6. 只有 一个 JFrame是在Swing应用程序中使用。

  7. 每个JPanel 必须 定义一个Swing布局管理器。

  8. 某些组件(例如JList和)JTable放在时会更好地工作JScrollPane

我确定我忘记了一些事情,但这应该是一个好的开始。



 类似资料:
  • 问题内容: 我试图找到有关如何使用Maven来构建和运行Swing应用程序的信息,但找不到任何有用的东西(Maven文档很乱)。 有人可以指出我相关文件吗?有人在Swing开发中使用Maven吗? 问题答案: 我猜您想从maven命令运行您的应用程序。您可以使用exec插件,如下所示: 您可能还需要在pom中使用它。 实际的配置可能会有所不同,具体取决于您最终使用的exec插件的版本- 我在某些版

  • 问题内容: 我正在为NodeJS使用ExpressJS Web框架。 使用ExpressJS的人将他们的环境(开发,生产,测试…),路线等放置在。我认为这不是一个好方法,因为当您拥有大型应用程序时,app.js太大了! 我想要这个目录结构: 这是我的代码: app.js config / environment.js config / routes.js 我的代码运行良好,我认为目录的结构很漂亮。

  • 问题内容: 是否有在 Express.js 应用程序中分解和模块化文件的通用约定?还是将所有内容保存在一个文件中很普遍? 问题答案: 我的分解如下: 我使用Exports返回相关内容。例如,在模型中,我这样做: 然后,如果我需要创建一个电话号码,则非常简单: 如果我需要使用架构,那么 (假设我们正在routes文件夹中工作,需要先上一层然后再下一层模型) 编辑4 该 快递维基 具有建立在它之上的框

  • 问题内容: 我通常在Linux系统上工作,但遇到一种情况,我需要编写一个客户端应用程序,该应用程序可以作为服务在Windows上运行。有人可以帮助我或指导我如何在Windows环境下构建MenuBar应用程序(例如Dropbox),该应用程序从操作系统启动开始,图标位于TaskBar中,然后单击该应用程序图标将显示一个菜单。 我的脚本语言是python。谢谢。 问题答案: 您可以使用pywin32

  • 一个普通的应用程序由以下文件组成: 二进制文件 这个安装在 /usr/bin。 一个桌面文件 这个桌面文件向shell提供关于这个程序的重要信息,例如名称、图标、D-Bus名称,启动的命令行。安装在 /usr/share/applications. 一个图标 这个图标安装在 /usr/share/icons/hicolor/48x48/apps, 无论当前背景是什么系统都会到这里查找图标。 一个设

  • 问题内容: 我有一个Swing应用程序,我希望将其从意大利面条转换为对Guice使用依赖项注入。使用Guice提供诸如配置和任务队列之类的服务的过程非常好,但是我现在是从应用程序的GUI开始的,不确定如何进行。 该应用程序基本上是,在中带有一堆标签。每个选项卡都是一个单独的子类,该子类列出了各种组件,并且需要服务才能在按下某些按钮时执行操作。 在当前应用程序中,这看起来像这样: 显然,这并不完全遵