gpt4 book ai didi

java - 启用 JLabel 闪烁 3 次,然后保持不可见/消失

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

我打算编写 java 代码来控制 JLabel 闪烁三次,然后在第三次闪烁后使其中的文本保持透明/“消失”。

如以下代码所示,我已经能够编写一个持续闪烁的 JLabel,但我想创建一个仅闪烁 3 次的 JLabel,然后使其中的文本保持透明。

public class BlinkLabel extends JLabel {

private static final long serialVersionUID = 1L;

private static final int BLINKING_RATE = 1000; // in ms

private boolean blinkingOn = true;

public Timer timer;

public BlinkLabel(String text) {
super(text);
timer = new Timer( BLINKING_RATE , new TimerListenerTwo());
timer.setInitialDelay(0);
timer.start();

}

public void setBlinking(boolean flag) {
this.blinkingOn = flag;
}

public boolean getBlinking(boolean flag) {
return this.blinkingOn;
}

public class TimerListenerTwo implements ActionListener{
int counter = 1;

public TimerListenerTwo() {

}

public void actionPerformed(ActionEvent evt){
if(counter == 3){//3 = YOUR MAX
timer.stop();
}
counter++;
}
}
}

我调用上面的函数如下:

BlinkLabel label = new BlinkLabel("");
label.setText("Blink blink");

我如何编辑上面的代码以使 JLabel 闪烁三次并使文本消失。

非常感谢任何想法/建议。

最佳答案

很简单,在你的 JFrame 或 JDialog 下面创建一个子类。

class LbBlink implements ActionListener {  
private javax.swing.JLabel label;
private java.awt.Color cor1 = java.awt.Color.red;
private java.awt.Color cor2 = java.awt.Color.gray;
private int count;

public LbBlink(javax.swing.JLabel label){
this.label = label;
}
@Override
public void actionPerformed(ActionEvent e) {
if(count % 2 == 0)
label.setForeground(cor1);
else
label.setForeground(cor2);
count++;
}
}

在你的类中声明一个变量。

private Timer timerLB;

之后,在您的类构造中设置变量。

timerLB = new Timer(1000, new "Your Class".LbBlink("Your jLabel"));

最后,在您的应用程序中,开始闪烁

timerLB.start();

停止:

timerLB.stop();

关于java - 启用 JLabel 闪烁 3 次,然后保持不可见/消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17524080/

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