【问题标题】:How to avoid multiple frames?如何避免多帧?
【发布时间】:2012-08-18 07:21:59
【问题描述】:

我正在创建一个 Java 桌面应用程序。在这个应用程序中,我有一张桌子。如果用户双击表格的行,则在另一个窗口[框架->查看框架]中查看相应的数据。用户最小化视图框架并选择表中的另一行。它再次在新窗口中打开[框架]。

如何避免多帧?我一次只想要一个视图帧。假设用户想要查看新数据,则旧视图框架将退出,新视图框架将打开。

【问题讨论】:

  • 一开始就没有两个 JFrame!但我会说:使视图框架模态化。
  • 为什么不维护一个对 JFrame 的引用?单例模式?
  • 请参阅The Use of Multiple JFrames, Good/Bad Practice? 以获得具有多种选择的答案的链接 - 包括CardLayout 和嵌套布局(例如CENTER 中的表格,BorderLayout 的 PAGE_END` 中有详细信息)。

标签: java swing jframe desktop-application


【解决方案1】:

使框架成为实例变量。每当您必须显示一个新框架时,请检查它是否已显示,如果已显示,请先关闭现有框架,然后再显示新框架。

【讨论】:

    【解决方案2】:

    一般来说,最好在您的应用程序中有一个JFrame,而所有其他窗口都是JDialogs。

    • 您是否考虑过制作第二个窗口模式?

    • 另一种选择是设置一个标志,告诉您第二个窗口是否打开。如果是,那么当用户双击表格中的另一行时,您只需替换内容(而不是创建新窗口)。

    您可以在WindowListenerwindowClosed 方法中设置该标志。这个WindowListener 然后你会将它添加到你的第二个窗口中。

    • 您可以通过调用Window#isShowing 查看Window 是否打开。这适用于JFrames 和JDialogs。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-18
      • 2019-09-13
      相关资源
      最近更新 更多