gpt4 book ai didi

java - 循环浏览窗口中的颜色

转载 作者:行者123 更新时间:2023-11-30 03:31:44 25 4
gpt4 key购买 nike

我是 Java 编程的初学者,遇到了一个问题(可能是一个很容易解决的问题)。

我正在尝试使用 Java GUI,并希望创建一个窗口,在该窗口中循环数组的颜色,直到没有更多的颜色为止。我相信我可以使用 for 循环并循环遍历数组来做到这一点,但是我不知道如何循环背景颜色。

任何帮助和解释将不胜感激。

public void flashColor()  { 

Color [] color = { Color.red,Color.orange,Color.green };

int i = 0;
for(i=0;i<color.length;i--){

getContentPane().setBackground(Color(i));
}
}

最佳答案

这行告诉我:

getContentPane().setBackground(Color(i));

您的似乎是一个 Swing GUI(您在问题中遗漏了一个关键信息!),因此您需要考虑 Swing 线程。您当前的代码实际上将循环遍历所有颜色,但它会立即在 Swing 线程上循环,这样 GUI 将无法绘制除最后一种颜色之外的任何颜色。解决方案:使用 Swing 计时器而不是 for 循环。在计时器内部推进一个索引 int 变量并用它来显示颜色。

类似于:

getContentPane().setBackground(colorArray[0]);
int delay = 1000; // for 1 second
Timer myTimer = new Timer(delay, new ActionListener() {

int index = 0;
public void actionPerformed(ActionEvent e) {
index++;
if (index >= colorArray.length) {
((Timer)e.getSource()).stop(); // stop the timer
} else {
getContentPane().setBackground(colorArray[index]);
}
}

});
myTimer.start();

该代码尚未经过测试,您需要阅读 Swing Timer 教程以了解详细信息。

请注意,这里的关键是,是的,您需要循环,并暂停(以便可以看到颜色),但您需要在线程中进行循环和暂停线程已关闭Swing 事件调度线程(或 EDT)。是的,您可以使用 SwingWorker 来完成此操作,但这是一种更困难的方法。使用 Swing Timer 来完成此操作容易得多。请注意,它会在您不可见的情况下使用后台线程。

关于java - 循环浏览窗口中的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28866689/

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