gpt4 book ai didi

java - 当我更改组件时,为什么必须在 JFrame 上使用 setvisible()?

转载 作者:行者123 更新时间:2023-12-02 06:01:51 24 4
gpt4 key购买 nike

因此,为了简单起见,我设置了一些测试代码来解决这个问题。基本上我有一个 JFrame ,并向其中添加了“this”(我只是从 JComponent 扩展了我的主类以节省时间)。该组件填充红色背景。然后我让它 hibernate 2 秒钟,然后输入此内容。

f.remove(this);
thing t = new thing();
f.add(t);
f.setVisible(true);

f 是我的 JFrame 对象,“thing”只是另一个扩展 JComponent 的类,它绘制蓝色背景..

当我注释掉 setvisible() 时,它不再变为蓝色。我尝试过使用 t.setVisible(true) 但似乎我必须使框架再次可见,而不是组件

有谁知道为什么我必须这么称呼...或者是否有另一种方法可以在单个框架内更改组件?

最佳答案

"Basically I have a JFrame and I added 'this' to it (I just extended my main class from JComponent to save time). this component fills in a red background. Then I have it sleep for 2 seconds and then type this."

  1. 不要“hibernate ”您的程序。相反,请使用 java.swing.Timer 在 GUI 上执行重复任务或用于动画。查看更多How to Use Swing Timers 。您可以看到一堆 Timer 示例 hereherehereherehere

  2. 不要尝试添加和删除面板,而是使用允许您在 View 之间切换的 CardLayout。它将帮助您避免添加和删除组件/容器带来的许多问题。查看更多How to Use CardLayout 。另请参阅一个简单的示例 here .

  3. 要回答您的主要问题,每当您从框架中删除和添加组件时,您都需要对其进行revalidate()setVisible() 会为您处理这个问题。

<小时/>

旁注

  • 似乎添加了很多删除背景面板)只是为了更改背景。为什么不只是setBackround()?您可以使用计时器来切换颜色

关于java - 当我更改组件时,为什么必须在 JFrame 上使用 setvisible()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22609593/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com