Swing Frame更改内容

时间:2017-03-12 22:04:40

标签: java swing

我很难在不使用标签面板的情况下为用户制作不同的屏幕。在Netbeans中我创建了Swing Frame,在用户登录后,如何刷新页面以便用不同的屏幕或JPanel或JTabbedPanel替换登录屏幕内容?我应该在GUI包中创建主Swing Frame,然后是其他一些Swing Frames,那么根据用户的动作显示不同内容的主Swing Frame可以使用来自其他Swing Frames的框架或面板吗?

1 个答案:

答案 0 :(得分:0)

这是一个可能的解决方案:

  • 使用扩展JPanel的多个类,每个类代表一个特定的"阶段"申请。因此,如果您有登录屏幕和主菜单,请将它们分为两个单独的类:

    公共类LoginPanel扩展了JPanel 公共类MainScreen扩展了JPanel

  • 要将其添加到JFrame,请调用[setContentPane(Container contentPane)]。在这种情况下,它是:frame.setContentPane(new LoginPanel)

  • 验证用户凭据后,使用新的MainScreen实例在框架上调用setContentPane()。来自javadoc的注释:

  

如果更换内容窗格,建议您将其替换为   不透明的JComponent。

此外,要将JFrame设置为内容窗格的首选大小,请在添加新内容后调用frame.pack()。

随着不同JPanels数量的增长,拥有一个"持有者可能会更容易。 JPanel作为没有属性的JFrame内容窗格,然后您可以只删除/添加到此。这样,您可以保持在整个应用程序生命周期中持续使用的常量组件,例如JFrame上的JMenuBar,而不必担心每次都将其添加到JFrame。

[1]: