【问题标题】:GUI - Switching between screensGUI - 在屏幕之间切换
【发布时间】:2017-01-04 02:31:31
【问题描述】:

我有我的程序,它可以连接到数据库工作! (万岁) 但是现在,我遇到了一个新问题。我读到使用多个JFrame 窗口(并关闭旧窗口)对用户不友好,而且是一种不好的学习习惯。

所以现在我想知道,有没有办法在面板之间切换,或者类似的东西?

示例:

JFrame 带有登录名和密码。 -- 用户登录,进入下一个“屏幕”,在那里他或她可以看到数据库信息,因为他或她已登录! 我应该使用什么,有什么好的方法吗?

【问题讨论】:

    标签: java swing user-interface


    【解决方案1】:

    您可能想查看CardLayout

    【讨论】:

    • 我有,但是(如果我错了,请纠正我)这不像使用 Tabs 吗?就像在 Internet 浏览器中一样?如果是这样,是否可以强制关闭某些选项卡?因为我不想在使用后打开“登录”选项卡。
    • “我有,但是(如果我错了,请纠正我)不是像使用标签一样吗?”JTappedPane 提供了您所指的标签,卡片布局没有。
    【解决方案2】:

    简单的答案是可以。这个想法是有一个本地化的类,其中包含一个外部类可以调用传递一个 jPanel 的方法,然后只需将该面板添加到您的 jFrames 内容窗格(这反过来将删除另一个面板)。有很多方法可以解决这个问题,我希望你能找到一个有效的方法,我希望这个答案也能帮助你。

    【讨论】:

      【解决方案3】:

      这是我通常遵循的程序。我创建并打开一个新框架并使父框架不可见。再次,当子框架关闭时,我使父框架可见。我使用这个程序很长时间了,没有遇到任何问题。

      这是点击登录按钮时执行的一段代码。

      ... setVisible(false); //Hide the login page DBPage page=new DBPage(this, value1); // DBPage is another JFrame page.setVisible(true);

      我觉得这么多代码已经足够理解了。

      【讨论】:

      • 我明白!但这会产生“闪光”效果吗?由于两个 JFrame 之间的转换,如果我是对的,就会有“空白”。
      • 没有“空白”可见。你可以试试这个。这对于登录页面到主页是可以的。但是,在主页中尝试使用选项卡和 CardLayout 来维护导航。当您关闭主页时,会返回清除用户会话数据的登录页面。
      • 好的,非常感谢!我现在就试试,对于标签,我肯定会使用 CardLayout,因为每个人都在提到它。我无法支持您的评论,但感谢您的帮助!
      • 也可以使用JTabbedPane,好用。
      【解决方案4】:

      JLayeredPane 可能会起作用。

      http://docs.oracle.com/javase/8/docs/api/javax/swing/JLayeredPane.html

      您可以将多个图层、登录屏幕等叠加在一起,并显示当时最相关的图层。

      上一个问题可能很有用:

      Java Swing - how to show a panel on top of another panel?

      【讨论】:

      • “JLayeredPane 可能会工作。” 卡片布局为此,因为它正是它的设计目的,
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-08
      • 1970-01-01
      相关资源
      最近更新 更多