【问题标题】:Replacing current JPanel from JButton inside the JPanel not the JFrame从 JPanel 内的 JButton 而不是 JFrame 中替换当前 JPanel
【发布时间】:2012-09-06 03:49:48
【问题描述】:

我有一个 JFrame,我将它用作主要的 JFrame,并在同一个 JFrame 中更改 JPanel。第一个 JPanel 已经在 J​​Frame 内,所以我可以用“this.removeall() then ,this.setContentPane(new JPanel2)”替换它,因为“this”在这里调用 JFrame 本身。

在另一个 JPanel 中,我想制作一个 JButton 来用另一个 JPanel 替换当前的 JPanel。问题是我之前不能执行相同的代码,因为这里的“this”调用的是 JPanel 而不是 JFrame。

问题是如何在 JPanel 中编写代码让我让 JFrame 更改其“setContentPane”以查看第二个面板?


我在使用 CardLayout 的过程中找到了答案。这个视频帮我解决了问题

CardLayout on Netbeans video

【问题讨论】:

  • 为什么不对这组面板使用CardLayout?
  • @AndrewThompson-在界面设计中我们使用了按钮而不是 CardLayout 或 Tabs。想把所有的应用面板都做成JFrame一个一个的改
  • 我想在 JPanel 本身而不是 JFrame 中的按钮内编写更改 JPanel 的代码 - @AndrewThompson
  • “在 JPanel 的按钮内”是什么意思 - 代码不应扩展按钮或面板。
  • 我的意思是,这将是按钮的功能。

标签: java swing netbeans jframe jpanel


【解决方案1】:

我想在 JPanel 的 buttonActionListner 中编写代码。我不会在 JFrame 中编写该代码,因此每个 JPanel 都可以添加和删除以独立调用另一个

和

@AndrewThompson-在界面设计中,我们使用了按钮而不是 CardLayout 或 Tabs。我想做所有的应用程序面板,并一一更改JFrame

必须打电话给家长(JFrame,JPanel),

validate(); // for Java7 revalidate() for JFrame
repaint();

删除后添加一个新的JPanel,仅一次并作为最后一行代码

正如@AndrewThompson 提到的更好、最简单和最简单的方法可能是使用 CardLayout

【讨论】:

  • OK,但是如何调用当前JPanel的JFrame
  • 创建 JFrame 的实例不会为 JFrame 扩展,从不,但在这种情况下,看起来你必须放置包含要删除的子面板的父面板,这是一种税用于使用 GUI builder
猜你喜欢
  • 2011-09-22
  • 2012-05-09
  • 1970-01-01
  • 1970-01-01
  • 2020-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多