I can fade out a normal JLabel using a Timer, as follows:
public static void main(String[] args) {
JFrame frame = new JFrame();
// final JLabel label = new JLabel("<html><font color=red>Red</font><font color=blue>Blue</font>");
final JLabel label = new JLabel("Hello");
label.setOpaque(true);
label.setBackground(Color.WHITE);
frame.getContentPane().add(label);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
final Timer timer = new Timer(100, null);
final int steps = 25;
timer.addActionListener(new ActionListener() {
int count = 0;
public void actionPerformed(ActionEvent e) {
if (count <= steps) {
float intensity = count / (float) steps;
label.setForeground(new Color(intensity, intensity, intensity));
count++;
} else {
timer.stop();
}
}
});
timer.start();
}
How can I make this also work with a JLabel that contains html, as per the commented-out line?
final JLabel label = new JLabel("<html><font color=red>Red</font><font color=blue>Blue</font>");