Java 如果不接受建议,也许是使用多个JFrame的一个很好的理由

Java 如果不接受建议,也许是使用多个JFrame的一个很好的理由,java,swing,jframe,Java,Swing,Jframe,我正在开发一个存款自动取款机的应用程序。几乎每个人一生中都至少使用过一次,所以可以肯定地说,你知道我在说什么 我目前正在做GUI,我想我应该使用多个JFrame 我的理由: 每个帧都设置为响应特定的不同条件-智能卡读卡器发送信号,超时发生,单击发生,机器的不同部分发送应用程序必须响应的各种信号,并显示相应的消息 由于这是一个嵌入式设备,用户除了使用这一个程序外,没有能力与机器的操作系统进行交互。我认为这就把对esthethics的考虑放在了一边——任务栏中有多个窗口 Fullscrean模式很好

我正在开发一个存款自动取款机的应用程序。几乎每个人一生中都至少使用过一次,所以可以肯定地说,你知道我在说什么

我目前正在做GUI,我想我应该使用多个JFrame

我的理由:


  • 每个帧都设置为响应特定的不同条件-智能卡读卡器发送信号,超时发生,单击发生,机器的不同部分发送应用程序必须响应的各种信号,并显示相应的消息
  • 由于这是一个嵌入式设备,用户除了使用这一个程序外,没有能力与机器的操作系统进行交互。我认为这就把对esthethics的考虑放在了一边——任务栏中有多个窗口
  • Fullscrean模式很好地融合了背景中发生的一切
  • 我不喜欢的是:

    从一帧切换到另一帧时,屏幕会闪烁。这可能与问题的一般主题无关,可能只是因为每次程序切换帧时,我都会处理帧,而不是将它们设置为不可见


    任何关于这个主题的想法都是受欢迎的。

    使用多个
    JFrame
    s并没有真正的优势,因为您可以使用一个JFrame,并有多个内容窗格


    这应该可以防止任何无用的闪烁,并确保在同一时间只有一个“屏幕”可见。

    使用多个
    JFrame
    s并没有真正的优势,因为您可以使用一个屏幕并为其设置多个内容窗格


    这将防止任何无用的闪烁,并确保在同一时间只有一个“屏幕”可见。

    您应该使用一个
    JFrame
    ,并为要显示的各种“屏幕”设置多个
    JPanel
    s。要更改“屏幕”,只需从
    JFrame
    中删除当前显示的
    JPanel
    ,然后添加新屏幕

    编辑:
    要进行切换,您可以使用
    CardLayout
    作为机架的布局管理器。它一次显示一个面板,允许您轻松地在它们之间切换。

    您应该使用一个
    JFrame
    ,并为要显示的各种“屏幕”提供多个
    JPanel
    s。要更改“屏幕”,只需从
    JFrame
    中删除当前显示的
    JPanel
    ,然后添加新屏幕

    编辑:
    要进行切换,您可以使用
    CardLayout
    作为机架的布局管理器。它一次显示一个面板,并允许您轻松地在它们之间切换。

    使用多个
    JFrame
    s并没有真正的优势,因为您可以使用一个面板并为其提供多个内容窗格。最终,如果您真的喜欢多框架设计,您可以查看
    JInternalFrame
    JDesktop
    。您可以使用多个实例来代替CardLayout,但这种设计会让您发疯。每个框架都设置为响应某些不同的条件==JMenuItem和CardLayout(将JFrame.pack()作为每张卡的最后一行代码)同意@mKorbel。。使用如所示的。使用多个
    JFrame
    s并没有真正的优势,因为您可以使用一个JFrame并拥有多个内容窗格。最终,如果您真的喜欢多框架设计,您可以查看
    JInternalFrame
    JDesktop
    。您可以使用多个实例而不是CardLayout,但是这种设计会让你发疯,每一帧都被设置为响应某些不同的条件==JMenuItem和CardLayout(每一张卡的最后一行代码是JFrame.pack())都同意@mKorbel。。使用如所示的。是的,我听说过这一点,但我不认为我理解。你能提供一个更详细描述该方法的链接吗?
    JFrame.setContentPane()
    可以用来用一个新的面板替换框架的所有内容,因此你只需要使用多个内容窗格(基本上是jpanel)而不是多个框架。@Kayaman(第2句)我对Java6/7/8 edgesYes中的这一点表示怀疑,我听说过,但我想我不明白。你能提供一个更详细描述该方法的链接吗?
    JFrame.setContentPane()
    可以用来用一个新的面板替换框架的所有内容,因此你只需要使用多个内容窗格(基本上是jpanel)而不是多个框架。@Kayaman(第2句)我对Java6/7/8边缘表示怀疑“只需从
    JFrame
    中删除当前显示的
    JPanel
    并添加新的。”这正是
    CardLayout
    为之设计的作业类型!@andrewhompson你说得对!我不记得它存在过!”只需从
    JFrame
    中删除当前显示的
    JPanel
    并添加新的。“这正是
    CardLayout
    的工作类型@AndrewThompson你说得对!我不记得它的存在!