gpt4 book ai didi

java - 使 JLabel 消失

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:51:21 26 4
gpt4 key购买 nike

我正在编写一个应用程序来执行某些任务并在成功完成任务后通知用户。通知用户我正在使用 jlabel。我希望这个 jlabel 显示消息并在一段时间后淡出。我使用 netbeans 作为我的 IDE。

这是我的类的架构。

摘要,GUI代码

abstract class Admin extends JFrame{
protected static jlabel lbl_message= new jlabel("some text");
// other functions and variables

abstarct protected void performButtonClickAction();

}

用于实现抽象函数和提供其他功能的类。

final class AdminActionPerformer extends Admin{
final public void performButtonClickAction(){
// code for doin the task
if(task is successful){
new Thread(new Fader(Admin.lbl_message)).start();
}
}

public static void main(String[] args) {
new AdminActionPerformer().setVisible(true);
}

}

制作 Jlabel fadeaway 的线程

class Fader implements Runnable{
javax.swing.JLabel label;
Color c;

Fader(javax.swing.JLabel label){
this.label=label;
c=label.getBackground();
}

public void run() {
int alpha=label.getGraphics().getColor().getAlpha()-5;
while(alpha>0){
System.out.println(alpha);
alpha-=25;
label.getGraphics().setColor(new Color(c.getRed(), c.getGreen(), c.getBlue(), alpha));
label.repaint();
try {
Thread.sleep(50);
} catch (InterruptedException ex) {
Logger.getLogger(Fader.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
}

但标签不会消失。我在这里做错了什么?谢谢:)

附言我已将 JLabel opaque 设置为 true。那是问题吗?我想最初显示带有背景颜色的标签,然后使其淡出。

最佳答案

如果你要做很多效果,你可以使用 Swing 动画库,比如 Trident .以下是淡出标签的方法。

   JLabel label = ....;
Timeline timeline = new Timeline(label);
timeline.addPropertyToInterpolate("background", label.getBackground(),
new Color(label.getBackground().getRGB(), true));
timeline.addPropertyToInterpolate("foreground", label.getForeground(),
new Color(label.getForeground().getRGB(), true));
timeline.play();

编辑:更新以更改前景色/背景色,这是标签上的属性。但是,对于生产代码,我会将标签包装在一个容器中,该容器可以将 alpha 应用于它的子项,然后您可以以组件中立的方式淡入/淡出组件。在其中一个动画工具包中有一个组件,但我现在找不到它...

关于java - 使 JLabel 消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3270997/

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