因此,我有一个代码,可以绘制像电影中那样的矩阵,并且我指出了数字以高百分比掉落的可能性。我的问题是,我希望所有的符号都不是静态的,而是闪烁的。也就是说,当符号达到绿色的上限(255)时,它开始变暗(最多 50)。我还希望它在大约10秒内发生(单程)。
import javax.swing.*;
import java.awt.*;
import java.util.Random;
import static java.awt.FlowLayout.CENTER;
import static java.lang.Math.floorDiv;
public class BigProject extends JFrame {
public static void main(String[] args) {
var random = new Random();
var f = new JFrame();
f.getContentPane().setBackground(Color.BLACK);
f.setDefaultCloseOperation(EXIT_ON_CLOSE);
f.setUndecorated(true);
f.getContentPane().setLayout(new FlowLayout(CENTER, 0, 0));
var screenSize = Toolkit.getDefaultToolkit().getScreenSize();
var labelSize = new Dimension(100, 60);
var rw = screenSize.getWidth() / (int) labelSize.getWidth();
var rh = screenSize.getHeight() / (int) labelSize.getHeight();
var repeat = rw * rh;
var digit = new String[]{
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
};
var letter = new String[]{
"a", "b", "c", "d", "f", "g", "h", "i", "j", "k",
"l", "m", "n", "o", "q", "r", "s", "t", "u", "y",
"x", "z"
};
for (var i = 0; i < repeat; i++) {
int a = random.nextInt(25);
if (a < 5) {
var number = random.nextInt(letter.length);
var label = getLabelG(labelSize, random, letter[number]);
f.add(label);
}
if (a >= 5) {
var number = random.nextInt(digit.length);
var label = getLabelG(labelSize, random, digit[number]);
f.add(label);
}
f.setExtendedState(Frame.MAXIMIZED_BOTH);
}
f.setVisible(true);
}
private static JLabel getLabelG(Dimension labelSize, Random random, String letter) {
var label = new JLabel(letter, SwingConstants.CENTER);
label.setPreferredSize(labelSize);
label.setFont(label.getFont().deriveFont(48.0F));
label.setForeground(new Color(0, 50 + random.nextInt(206), 0));
return label;
}
}