【问题标题】:Two Different Panels in One Frame - Java一帧中的两个不同面板 - Java
【发布时间】:2012-02-15 16:54:50
【问题描述】:

我有一个问题。 我有一个主框架,左边有一个带有菜单的侧边栏。 我的问题是,是否可以在主框架内制作另一个面板, 这样如果单击menu1,相关内容应显示到主框架的后半部分,当按下其他菜单时,显然根据选择的内容显示相关内容。有点难以解释,抱歉。有没有人知道,这在 Java 和 Eclipse 中是否可行?

【问题讨论】:

  • 您使用什么小部件? AWT、Swing、SWT?
  • 我也一直在使用 Swing 和 AWT。但我宁愿使用 JPanels 等窗口构建器中的所有内置工具。

标签: java swing jframe awt jpanel


【解决方案1】:

是的,这很可能你已经看过CardLayout,这个LayoutManager 可以提供如何在JFrame 中实现JPanel 之间切换的简单方法

【讨论】:

  • 出于好奇,CardLayout 的扩展性如何?据我所知,所有的 JPanel 都在 Frame 初始化时被加载并放入内存中。将这种方法用于 100+ JPanel 是否可靠?
  • @PeekaySwitch:用这个example试试看。
  • 应该是可能的,注意 100+ JPanel 将占用大量内存,我建议不要为任何编程语言创建大量组件,为什么你想要/需要那个.. .
  • @Pita:这就是你的答案。 1+
  • 在我的主框架中,现在我有 2 个 JPanel。左侧一个,用作带有菜单的侧边栏。另一个在右边,我将 JPanel 的布局设置为卡片布局。现在,我该如何创建不同的卡片。而当点击menu1时,应该显示Card1,当点击menu2时,应该显示Card2,以此类推?
【解决方案2】:

是的,您可以在 1 帧中添加 2 个 JPanel。

JFrame frame = new JFrame();
JPanel pane1 = new JPanel();
JPanel pane2 = new JPanel();
frame.add(pane1, BorderLayout.WEST);
frame.add(pane2, BorderLayout.EAST);

【讨论】:

  • 然后我可以用接口创建不同的类,并在按下特定按钮时在 pane2 中调用它们吗?那可能吗?或者还能怎么做?
  • 是的,您可以创建一个新对象并实现 JPanel、JButton 等...您还可以在其中指定将任何元素直接添加到该面板,而不必在 1 个类中使其复杂化。然后使用 MouseListeners,创建静态方法来设置新选项等。
  • 好的,我会尝试一下,并在需要时 ping 你 :) 谢谢
  • 你需要提到一些关于布局管理器的事情。
  • @Legend JFrame默认实现了(>=Java5) BorderLayout,这段代码把pane1 & pane2放到BorderLayout.CENTER,那么屏幕上就只能看到pane2了,
猜你喜欢
  • 2015-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-04
  • 1970-01-01
  • 2016-10-13
  • 1970-01-01
相关资源
最近更新 更多