如何在每秒钟内改变圆的颜色 import java.applet.*; 导入java.awt.*;//图形、形状 导入java.awt.geom.*//图形2d /* */ 公共类Oval1扩展小程序实现可运行{ 圆形; 颜色c; 公共void init(){ 圆圈=新的椭圆2d.浮动(90100,90,90); 重新油漆(); 螺纹th=新螺纹(此); th.start(); } 公开募捐{ 试一试{ while(true){ 系统输出打印项次(1); c=颜色。青色; 重新油漆(); 睡眠(1000); 系统输出打印ln(2); c=颜色。灰色; 重新油漆(); } }捕获(例外情况除外){ 例如printStackTrace(); } } 公共空间更新(图g){ 油漆(g); } 公共空间涂料(图g){ 图形2d=(图形2d)g; d、 setColor(c); d、 填充(圆圈); } }
我正在尝试创建一个小程序,它的中间有一个填充的圆圈&每秒钟更改圆圈的颜色,这意味着我想显示一个闪烁的圆圈 我想每秒钟改变一次圆圈的颜色 为此,我使用Shape类和Thread,但它仍然不起作用 我已经尝试通过覆盖更新方法来使用如何在每秒钟内改变圆的颜色 import java.applet.*; 导入java.awt.*;//图形、形状 导入java.awt.geom.*//图形2d /* */ 公共类Oval1扩展小程序实现可运行{ 圆形; 颜色c; 公共void init(){ 圆圈=新的椭圆2d.浮动(90100,90,90); 重新油漆(); 螺纹th=新螺纹(此); th.start(); } 公开募捐{ 试一试{ while(true){ 系统输出打印项次(1); c=颜色。青色; 重新油漆(); 睡眠(1000); 系统输出打印ln(2); c=颜色。灰色; 重新油漆(); } }捕获(例外情况除外){ 例如printStackTrace(); } } 公共空间更新(图g){ 油漆(g); } 公共空间涂料(图g){ 图形2d=(图形2d)g; d、 setColor(c); d、 填充(圆圈); } },java,multithreading,applet,shapes,Java,Multithreading,Applet,Shapes,我正在尝试创建一个小程序,它的中间有一个填充的圆圈&每秒钟更改圆圈的颜色,这意味着我想显示一个闪烁的圆圈 我想每秒钟改变一次圆圈的颜色 为此,我使用Shape类和Thread,但它仍然不起作用 我已经尝试通过覆盖更新方法来使用paint(g) 这也不会影响您可以使用Java定时器代替Thread.sleep()。例如,使用计时器。Thread.sleep()阻止小程序的绘制方法。在第二次重新绘制()后添加Thread.sleep(1000) 试试这个 只需要把线程。睡眠(1000)在第二次重新绘
paint(g)
这也不会影响您可以使用Java定时器代替Thread.sleep()。例如,使用计时器。Thread.sleep()阻止小程序的绘制方法。在第二次重新绘制()后添加Thread.sleep(1000) 试试这个 只需要把线程。睡眠(1000)在第二次重新绘制()之后,当前在第二次重新绘制之后立即调用第一次重新绘制,因此它在第二次重新绘制()上覆盖绘制强>
while(true) {
System.out.println(1);
c = Color.cyan;
repaint();
Thread.sleep(1000);
System.out.println(2);
c = Color.gray;
repaint();
Thread.sleep(1000);
}
import java.applet.*;
导入java.awt.*;//图形、形状
导入java.awt.geom.*//图形2d
/*
*/
公共类Oval1扩展小程序实现可运行{
圆形;
颜色c;
公共void init(){
圆圈=新的椭圆2d.浮动(90100,90,90);
重新油漆();
螺纹th=新螺纹(此);
th.start();
}
公开募捐{
试一试{
while(true){
系统输出打印项次(1);
c=颜色。青色;
重新油漆();
睡眠(1000);
系统输出打印ln(2);
c=颜色。灰色;
重新油漆();
睡眠(1000);
}
}捕获(例外情况除外){
例如printStackTrace();
}
}
公共空间更新(图g){
油漆(g);
}
公共空间涂料(图g){
图形2d=(图形2d)g;
d、 setColor(c);
d、 填充(圆圈);
}
}
您是否获得System.out.println输出?是的,在控制台中,我每秒都会得到两条println语句……c会改变颜色,但您看不到它。添加线程。睡眠(1000);到重新绘制()后while块的末尾;你会得到你想要的。我必须使用线程,因为这是我的学校作业,由我的教授提供的定义…你能给出我使用定时器类的例子吗,因为我不知道swing的定时器类的用法??你可以看看,或者
while(true) {
System.out.println(1);
c = Color.cyan;
repaint();
Thread.sleep(1000);
System.out.println(2);
c = Color.gray;
repaint();
Thread.sleep(1000);
}
import java.applet.*;
import java.awt.*; // Graphics, Shape
import java.awt.geom.*; //Graphics2D
/*
<applet code = Oval1.class height=300 width=300 >
</applet>
*/
public class Oval1 extends Applet implements Runnable {
Shape circle;
Color c;
public void init() {
circle = new Ellipse2D.Float(90,100, 90, 90);
repaint();
Thread th = new Thread(this);
th.start();
}
public void run() {
try {
while(true) {
System.out.println(1);
c = Color.cyan;
repaint();
Thread.sleep(1000);
System.out.println(2);
c = Color.gray;
repaint();
Thread.sleep(1000);
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
public void update(Graphics g) {
paint(g);
}
public void paint(Graphics g) {
Graphics2D d = (Graphics2D) g;
d.setColor(c);
d.fill(circle);
}
}