Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在彩虹的每个弧之间加上1秒的延迟_Java_Multithreading_Swing_Animation - Fatal编程技术网

Java 在彩虹的每个弧之间加上1秒的延迟

Java 在彩虹的每个弧之间加上1秒的延迟,java,multithreading,swing,animation,Java,Multithreading,Swing,Animation,大家好,我在这里使用Thread.delay()在彩虹的每个弧的形成之间添加延迟,使其看起来像一个动画。当我使用Thread.delay()时,它会延迟整个过程。有没有其他方法,或者我做错了。请帮我解决这个问题 import java.awt.BorderLayout; import java.awt.Color; import java.awt.event.*; import javax.swing.*; public class RainBow2{

大家好,我在这里使用Thread.delay()在彩虹的每个弧的形成之间添加延迟,使其看起来像一个动画。当我使用Thread.delay()时,它会延迟整个过程。有没有其他方法,或者我做错了。请帮我解决这个问题

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


    public class RainBow2{
        static int x,y,z;
        static RainBowPanel rainBow = new RainBowPanel();
        static StdRainBow stdRainBow = new StdRainBow();
        static JTextField xCo = new JTextField(4);
        static JTextField yCo = new JTextField(4);
        static JTextField angle = new JTextField(4);
        static JFrame frame;

        public static void main(String[] args){
            Color color = new Color(135,206,250);
            frame = new JFrame("Rainbow");
            JPanel panel = new JPanel();
            JButton draw = new JButton("Draw RainBow");
            draw.addActionListener(new ListenButton());
            JLabel lab1 = new JLabel("X-Coordinate");
            JLabel spaceLab = new JLabel("    ");
            JLabel lab2 = new JLabel("Y-Coordinate");
            JLabel angleLab = new JLabel("Initial Angle");
            JButton chButton = new JButton("Change Color");
            chButton.addActionListener(new ListenButton());
            panel.setBackground(color);
            panel.add(angleLab);
            panel.add(angle);
            panel.add(lab1);
            panel.add(xCo);
            panel.add(spaceLab);
            panel.add(lab2);
            panel.add(yCo);
            panel.add(draw);
            panel.add(spaceLab);
            panel.add(chButton);
            frame.getContentPane().add(BorderLayout.SOUTH,panel);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setSize(1366,740);
            frame.setVisible(true);
            rainBow.addMouseListener(new RainBowList());
            frame.getContentPane().add(rainBow);


        }

        static class RainBowList extends MouseAdapter implements MouseMotionListener{
            public void mouseClicked(MouseEvent e){
                x = e.getX();
                y = e.getY();
                rainBow.drawing(x, y, 0);

            }

        }

        static class ListenButton implements ActionListener{
            public void actionPerformed(ActionEvent a){
                if(a.getActionCommand().equals("Draw RainBow")){
                    x = Integer.parseInt(xCo.getText());
                    y = Integer.parseInt(yCo.getText());
                    z = Integer.parseInt(angle.getText());
                    rainBow.drawing(x, y,z);
                }
                if(a.getActionCommand().equals("Change Color")){
                    rainBow.drawing(x, y,z);
                }
                            }

        }




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

public class RainBowPanel extends JPanel{

    int x,y,z;

    public void drawing(int xx, int yy, int zz){
        Color color = new Color(135,206,250);
        setBackground(color);
        z = zz;
        x = xx;
        y = yy;
        repaint();
    }


    public void paintComponent(Graphics g){
        super.paintComponent(g);
        int length = 300;
        int width = 300;
        x = x-length/2;
        y = y-width/2;

        for(int i =0 ; i< 7;i++){
            Color color = new Color((int)(Math.random()*255),(int)(Math.random()*255),(int)(Math.random()*255));
            g.setColor(color);
            g.fillArc(x,y,length ,width ,z,180 );

            x=x+15;
            y=y+15;
            length = (length-30);
            width = (width-30);
            try{
                Thread.sleep(200);
                }catch(Exception e){

                }
        }

        }

}





    }
导入java.awt.BorderLayout;
导入java.awt.Color;
导入java.awt.event.*;
导入javax.swing.*;
公共级彩虹2{
静态整数x,y,z;
静态彩虹面板彩虹=新彩虹面板();
静态StdRainBow StdRainBow=新StdRainBow();
静态JTextField xCo=新的JTextField(4);
静态JTextField yCo=新的JTextField(4);
静态JTextField角度=新的JTextField(4);
静态JFrame;
公共静态void main(字符串[]args){
颜色=新颜色(135206250);
框架=新的JFrame(“彩虹”);
JPanel面板=新的JPanel();
JButton draw=新JButton(“绘制彩虹”);
addActionListener(newlistenButton());
JLabel lab1=新的JLabel(“X坐标”);
JLabel spaceLab=新的JLabel(“”);
JLabel lab2=新的JLabel(“Y坐标”);
JLabel angleLab=新JLabel(“初始角度”);
JButton chButton=新JButton(“更改颜色”);
chButton.addActionListener(newlistenButton());
面板.立根背景(颜色);
面板。添加(angleLab);
面板。添加(角度);
面板。添加(lab1);
面板。添加(xCo);
添加面板(spaceLab);
面板。添加(lab2);
面板。添加(yCo);
面板。添加(绘制);
添加面板(spaceLab);
面板。添加(chButton);
frame.getContentPane().add(BorderLayout.SOUTH,面板);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
框架设置尺寸(1366740);
frame.setVisible(true);
rainBow.addMouseListener(新保龄球手());
frame.getContentPane().add(彩虹);
}
静态类RainBowList扩展了MouseAdapter,实现了MouseMotionListener{
公共无效mouseClicked(MouseEvent e){
x=e.getX();
y=e.getY();
彩虹图(x,y,0);
}
}
静态类ListenButton实现ActionListener{
已执行的公共无效操作(操作事件a){
如果(a.getActionCommand().equals(“绘制彩虹”)){
x=Integer.parseInt(xCo.getText());
y=Integer.parseInt(yCo.getText());
z=Integer.parseInt(angle.getText());
彩虹图(x,y,z);
}
如果(a.getActionCommand().equals(“更改颜色”)){
彩虹图(x,y,z);
}
}
}
导入javax.swing.*;
导入java.awt.*;
导入java.io.*;
导入java.awt.event.*;
公共类彩虹面板扩展JPanel{
int x,y,z;
公共作废图纸(int xx、int yy、int zz){
颜色=新颜色(135206250);
挫折背景(颜色);
z=zz;
x=xx;
y=yy;
重新油漆();
}
公共组件(图形g){
超级组件(g);
整数长度=300;
整数宽度=300;
x=x长度/2;
y=y宽度/2;
对于(int i=0;i<7;i++){
颜色=新颜色((int)(Math.random()*255),(int)(Math.random()*255),(int)(Math.random()*255));
g、 设置颜色(颜色);
g、 圆角弧(x,y,长度,宽度,z,180);
x=x+15;
y=y+15;
长度=(长度-30);
宽度=(宽度-30);
试一试{
睡眠(200);
}捕获(例外e){
}
}
}
}
}
当我使用Thread.delay()时,它会延迟整个过程

绘画方法只适用于绘画。您不应该导致线程延迟。这将防止GUI在整个循环完成执行之前重新绘制自身

相反,您可以使用
摆动计时器来计划重新绘制

与其在paintComponent()中进行绘制,不如在BuffereImage中进行绘制。然后,您可以在JLabel上的ImageIcon中显示图像

因此,当计时器事件生成时,您将绘制彩虹的颜色。在所有7种颜色被涂上后,你停止定时器

有关更多信息和示例,请阅读上Swing教程的部分

当我使用Thread.delay()时,它会延迟整个过程

绘画方法只适用于绘画。您不应该导致线程延迟。这将防止GUI在整个循环完成执行之前重新绘制自身

相反,您可以使用
摆动计时器来计划重新绘制

与其在paintComponent()中进行绘制,不如在BuffereImage中进行绘制。然后,您可以在JLabel上的ImageIcon中显示图像

因此,当计时器事件生成时,您将绘制彩虹的颜色。在所有7种颜色被涂上后,你停止定时器

有关更多信息和示例,请阅读上Swing教程的部分