gpt4 book ai didi

java - 使用 JFrame 的简单 GUI 动画

转载 作者:搜寻专家 更新时间:2023-11-01 01:47:08 25 4
gpt4 key购买 nike

我覆盖了 JFrame 中的 setVisible() 函数。它所做的只是不断地扩大框架或缩小框架,直到它达到我想要的尺寸。这使得一个简单的动画。不过,我的问题是它不稳定,不平滑,并且如果框架移动则效果不佳。有什么方法可以使这种清洁剂更流畅、更光滑?

/**
* Sets this window visible and also displays an effect when the window becomes
* visible
* @param visible True if the window should be visible, false otherwise
*/
@Override
public void setVisible(final boolean visible)
{
final int effectSpeed = 5;

if(effect == false)
{
super.setVisible(visible);
}

if(effect && visible)
{
super.setVisible(visible);
//run the window opening effect
new Thread(new Runnable()
{
public void run()
{
for (int i = 0; i <= parent.getHeight(); i = i + effectSpeed)
{
setSize(getPreferredSize().width, i);
try
{
Thread.sleep(1);
}
catch (Exception e)
{
}
}
}
}).start();
}
else if(effect && visible == false)
{
//run the window closing effect
new Thread(new Runnable()
{
public void run()
{
for (int i = parent.getHeight(); i >= 0; i = i - effectSpeed)
{
setSize(getPreferredSize().width, i);
try
{
Thread.sleep(1);
}
catch (Exception e)
{
}
}
DataWindow.super.setVisible(visible);
}
}).start();
}
}

最佳答案

你应该使用 Swing Timers为此,而不是创建自己的线程。

关于java - 使用 JFrame 的简单 GUI 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6412314/

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