gpt4 book ai didi

java - 如何使用 Thread.sleep() 和 setBackground() 在 Swing 中创建闪光效果?

转载 作者:行者123 更新时间:2023-11-29 07:13:10 25 4
gpt4 key购买 nike

我想通过以下方式制作闪光效果:将(JTextArea 的)背景更改为红色 --> 然后等待 1 秒 --> 返回到白色。我喜欢这样:

JTextArea jTextArea = new JTextArea();
jTextArea.setBackGround(Color.RED);
Thread.currentThread().sleep(1000);
jTextArea.setBackGround(Color.WHITE)

但它不起作用,我只有白色背景,我没有看到红色背景。

我哪里错了?

谢谢!

最佳答案

不要使用 Thread.sleep(...),它会卡住您的 GUI,您应该使用 javax.swing.Timer .此外,对 GUI 的任何更新都必须在 EDT 上完成,正如@MinhCatVO 所说的那样。有关该主题的更多信息,请参阅 Concurrency in Swing .看看下面的代码,问问有什么是你无法掌握的。

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class ColouringTextArea
{
private JTextArea tarea;
private Timer timer;
private Color[] colours = {
Color.RED,
Color.BLUE,
Color.GREEN.darker(),
Color.DARK_GRAY,
Color.MAGENTA,
Color.YELLOW
};
private int counter = 0;
private ActionListener timerAction = new ActionListener()
{
public void actionPerformed(ActionEvent ae)
{
if (counter < colours.length)
{
tarea.setBackground(colours[counter]);
counter++;
}
else
{
tarea.setBackground(Color.PINK);
counter = 0;
}
}
};

private void displayGUI()
{
JFrame frame = new JFrame("Colouring JTextArea");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanel contentPane = new JPanel();
tarea = new JTextArea(10, 10);
contentPane.add(tarea);

frame.setContentPane(contentPane);
frame.pack();
frame.setLocationByPlatform(true);
frame.setVisible(true);

timer = new Timer(1000, timerAction);
timer.start();
}

public static void main(String... args)
{
SwingUtilities.invokeLater(new Runnable()
{
public void run()
{
new ColouringTextArea().displayGUI();
}
});
}
}

关于java - 如何使用 Thread.sleep() 和 setBackground() 在 Swing 中创建闪光效果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11905456/

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