Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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 为什么没有';画一条动画曲线?_Java_User Interface - Fatal编程技术网

Java 为什么没有';画一条动画曲线?

Java 为什么没有';画一条动画曲线?,java,user-interface,Java,User Interface,这是我在网上找到的班级。它最初是一个小程序,但我不想将其用作小程序,因此我更改了一些方法(例如init()为构造函数) 但是,它不起作用。你能帮帮我吗 符号帧帧: public class SignInFrame extends javax.swing.JFrame { Panel panel; /** Creates new form SignInFrame */ public SignInFrame() { initComponents(); } public void in

这是我在网上找到的班级。它最初是一个小程序,但我不想将其用作小程序,因此我更改了一些方法(例如
init()
为构造函数)

但是,它不起作用。你能帮帮我吗

符号帧帧:

public class SignInFrame extends javax.swing.JFrame {

Panel panel;

/** Creates new form SignInFrame */
public SignInFrame() {
    initComponents();
}


public void init() {
    getContentPane().add(panel = new Panel());

}

public void start() {
    panel.start();
}

public void stop() {
    panel.stop();
}
 public static void main(String args[]) {
    java.awt.EventQueue.invokeLater(new Runnable() {
        public void run() {
            new SignInFrame().setVisible(true);
        }
    });
}}
面板对话框:

package ClientGUI;

import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Paint;
import java.awt.RenderingHints;
import java.awt.geom.GeneralPath;
import java.awt.image.BufferedImage;

/**
 *
 * @author ICC
 */

public class Panel extends javax.swing.JPanel implements Runnable{


private Thread thread;
    private BufferedImage bimg;
    private static final int NUMPTS = 6;

    //  solid line stoke
    protected BasicStroke solid = new BasicStroke(10.0f,
                        BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND);
    //  dashed line stroke
    protected BasicStroke dashed = new BasicStroke(10.0f,
       BasicStroke.CAP_BUTT, BasicStroke.JOIN_ROUND, 10, new float[] {5}, 0);
    private float animpts[] = new float[NUMPTS * 2];
    private float deltas[] = new float[NUMPTS * 2];
    protected Paint fillPaint, drawPaint;

    // indicates whether or not to fill shape
    protected boolean doFill = true;

    // indicates whether or not to draw shape
    protected boolean doDraw = true;
    protected GradientPaint gradient;
    protected BasicStroke stroke;


    public Panel() {
        setBackground(Color.white);
        gradient = new GradientPaint(0,0,Color.red,200,200,Color.yellow);
        fillPaint = gradient;
        drawPaint = Color.blue;
        stroke = solid;

    }
           // generates new points for the path
    public void animate(float[] pts, float[] deltas, int i, int limit) {
        float newpt = pts[i] + deltas[i];
        if (newpt <= 0) {
            newpt = -newpt;
            deltas[i] = (float) (Math.random() * 4.0 + 2.0);
        } else if (newpt >= (float) limit) {
            newpt = 2.0f * limit - newpt;
            deltas[i] = - (float) (Math.random() * 4.0 + 2.0);
        }
        pts[i] = newpt;
    }


    /*
     * generates random points with the specified surface width
     * and height for the path
     */
    public void reset(int w, int h) {
        for (int i = 0; i < animpts.length; i += 2) {
            animpts[i + 0] = (float) (Math.random() * w);
            animpts[i + 1] = (float) (Math.random() * h);
            deltas[i + 0] = (float) (Math.random() * 6.0 + 4.0);
            deltas[i + 1] = (float) (Math.random() * 6.0 + 4.0);
            if (animpts[i + 0] > w / 2.0f) {
                deltas[i + 0] = -deltas[i + 0];
            }
            if (animpts[i + 1] > h / 2.0f) {
                deltas[i + 1] = -deltas[i + 1];
            }
        }
        gradient = new GradientPaint(0,0,Color.red,w*.7f,h*.7f,Color.yellow);
    }


    // calls animate for every point in animpts
    public void step(int w, int h) {
        for (int i = 0; i < animpts.length; i += 2) {
            animate(animpts, deltas, i + 0, w);
            animate(animpts, deltas, i + 1, h);
        }
    }


    // sets the points of the path and draws and fills the path
    public void drawDemo(int w, int h, Graphics2D g2) {
        float[] ctrlpts = animpts;
        int len = ctrlpts.length;
        float prevx = ctrlpts[len - 2];
        float prevy = ctrlpts[len - 1];
        float curx = ctrlpts[0];
        float cury = ctrlpts[1];
        float midx = (curx + prevx) / 2.0f;
        float midy = (cury + prevy) / 2.0f;
        GeneralPath gp = new GeneralPath(GeneralPath.WIND_NON_ZERO);
        gp.moveTo(midx, midy);
        for (int i = 2; i <= ctrlpts.length; i += 2) {
            float x1 = (midx + curx) / 2.0f;
            float y1 = (midy + cury) / 2.0f;
            prevx = curx;
            prevy = cury;
            if (i < ctrlpts.length) {
                curx = ctrlpts[i + 0];
                cury = ctrlpts[i + 1];
            } else {
                curx = ctrlpts[0];
                cury = ctrlpts[1];
            }
            midx = (curx + prevx) / 2.0f;
            midy = (cury + prevy) / 2.0f;
            float x2 = (prevx + midx) / 2.0f;
            float y2 = (prevy + midy) / 2.0f;
            gp.curveTo(x1, y1, x2, y2, midx, midy);
        }
        gp.closePath();
        if (doDraw) {
            g2.setPaint(drawPaint);
            g2.setStroke(stroke);
            g2.draw(gp);
        }
        if (doFill) {
            if (fillPaint instanceof GradientPaint) {
                fillPaint = gradient;
            }
            g2.setPaint(fillPaint);
            g2.fill(gp);
        }
    }


    public Graphics2D createGraphics2D(int w, int h) {
        Graphics2D g2 = null;
        if (bimg == null || bimg.getWidth() != w || bimg.getHeight() != h) {
            bimg = (BufferedImage) createImage(w, h);
            reset(w, h);
        }
        g2 = bimg.createGraphics();
        g2.setBackground(getBackground());
        g2.clearRect(0, 0, w, h);
        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                            RenderingHints.VALUE_ANTIALIAS_ON);
        return g2;
    }


    public void paint(Graphics g) {
        Dimension d = getSize();
        step(d.width, d.height);
        Graphics2D g2 = createGraphics2D(d.width, d.height);
        drawDemo(d.width, d.height, g2);
        g2.dispose();
        if (bimg != null)  {
            g.drawImage(bimg, 0, 0, this);
        }
    }


    public void start() {
        thread = new Thread(this);
        thread.setPriority(Thread.MIN_PRIORITY);
        thread.start();
    }


    public synchronized void stop() {
        thread = null;
    }


    public void run() {
        Thread me = Thread.currentThread();
        while (thread == me) {
            repaint();
            try {
                Thread.sleep(10);
            } catch (Exception e) { break; }
        }
        thread = null;
    }
     public static void main(String argv[]) {
    SignInFrame n = new SignInFrame();

    n.start();
}}
packageclientgui;
导入java.awt.BasicStroke;
导入java.awt.Color;
导入java.awt.Dimension;
导入java.awt.GradientPaint;
导入java.awt.Graphics;
导入java.awt.Graphics2D;
导入java.awt.Paint;
导入java.awt.RenderingHints;
导入java.awt.geom.GeneralPath;
导入java.awt.image.buffereImage;
/**
*
*@作者国际商会
*/
公共类面板扩展javax.swing.JPanel实现可运行{
私有线程;
专用缓冲图像bimg;
专用静态最终整数NUMPTS=6;
//实线斯托克
受保护的基本行程固体=新的基本行程(10.0f,
基本行程。CAP_对接,基本行程。连接_轮);
//虚线笔划
受保护的基本行程虚线=新的基本行程(10.0f,
BasicStroke.CAP_BUTT,BasicStroke.JOIN_ROUND,10,新浮点[]{5},0);
私有浮动animpts[]=新浮动[NUMPTS*2];
私有浮动增量[]=新浮动[NUMPTS*2];
保护漆、填充漆、拉丝漆;
//指示是否填充形状
受保护布尔值doFill=true;
//指示是否绘制形状
受保护布尔值doDraw=true;
保护梯度涂料梯度;
保护性基本行程;
公共事务委员会(){
挫折地面(颜色:白色);
梯度=新的梯度油漆(0,0,颜色.红色,200200,颜色.黄色);
fillPaint=渐变;
drawPaint=Color.blue;
笔划=实心;
}
//为路径生成新点
public void动画(float[]pts,float[]delta,int i,int limit){
float newpt=pts[i]+增量[i];
if(newpt=(浮动)限制){
newpt=2.0f*极限-newpt;
delta[i]=-(浮点)(Math.random()*4.0+2.0);
}
pts[i]=newpt;
}
/*
*生成具有指定曲面宽度的随机点
*道路的高度
*/
公共无效重置(整数w,整数h){
对于(int i=0;iw/2.0f){
三角洲[i+0]=-三角洲[i+0];
}
如果(animpts[i+1]>h/2.0f){
三角洲[i+1]=-三角洲[i+1];
}
}
梯度=新的梯度涂料(0,0,颜色。红色,w*.7f,h*.7f,颜色。黄色);
}
//调用animpts中每个点的动画
公共无效步骤(int w,int h){
对于(int i=0;i对于(int i=2;i,在SignInFrame构造函数中,您调用了initComponents(),但这并不存在。我想您的意思是调用init()。而且您的JFrame没有大小集,当我在linux(Java 1.6)下运行时,它工作了,但很小,您应该添加一个setSize调用

尝试以下编辑:

public class SignInFrame extends javax.swing.JFrame {

    Panel panel;

    /** Creates new form SignInFrame */
    public SignInFrame() {
        setSize (600,600);
        init();
    }


    public void init() {
        getContentPane().add(panel = new Panel());
        start();
    }

    public void start() {
        panel.start();
    }

    public void stop() {
        panel.stop();
    }

     public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new SignInFrame().setVisible(true);
            }
        });
     }

}

具体来说,什么不起作用?它不在我的框架上显示曲线。它起什么作用?框架正在打开吗?框架中是否显示任何内容?是否要在构造函数中调用
init()
,而不是
initComponents
。您在哪里调用
start()