Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

lkb

erro em codigo para animação em java

Recommended Posts

ola to tentando fazer uma animação em java e peguei esse codigo mas o botão que deveria iniciar a animação da indicando erro poderia me diser o que esta errado?

main(P1.getGraphics());
// TODO add your handling code here:
    }

public class Stars3D extends JApplet {
    public void init() {
        Demo demo = new Demo();
        getContentPane().add(demo);
        getContentPane().add("North", new DemoControls(demo));
    }
 class Demo extends JPanel {
        private Color colors[] = { Color.red, Color.green, Color.white };
        private  AffineTransform at = AffineTransform.getTranslateInstance(-5, -5);
        private Shape shape, tshape;
        private Shape ribbon;
        public int fontSize = 100;
        public String text = "J2D";
        public int numStars = 300;
        public Demo() {
            setBackground(Color.black);
        }
        public void drawDemo(int w, int h, Graphics2D g2) {
             Rectangle2D rect = new Rectangle2D.Double();
            for (int i = 0; i < numStars; i++) {
                g2.setColor(colors[i%3]);
                g2.setComposite(AlphaComposite.getInstance(
                             AlphaComposite.SRC_OVER, (float) Math.random()));
                rect.setRect(w*Math.random(), h*Math.random(),2,2);
                g2.fill(rect);
            }
            FontRenderContext frc = g2.getFontRenderContext();
            Font font = new Font("serif.bolditalic", Font.PLAIN, fontSize);
            shape = font.createGlyphVector(frc, text).getOutline();
            tshape = at.createTransformedShape(shape);
            PathIterator pi = shape.getPathIterator(null);
            float seg[] = new float[6];
            float tseg[] = new float[6];
            GeneralPath working = new GeneralPath(GeneralPath.WIND_NON_ZERO);
            float x=0, y=0; // Current point on the path
            float tx=0, ty=0; // Transformed path point
            float cx=0, cy=0; // Last moveTo point, for SEG_CLOSE
            float tcx=0, tcy=0; // Transformed last moveTo point

            while(!pi.isDone()) {
                int segType = pi.currentSegment(seg);
                switch(segType) {
                    case PathIterator.SEG_MOVETO:
                            at.transform(seg, 0, tseg, 0, 1);
                            x = seg[0];
                            y = seg[1];
                            tx = tseg[0];
                            ty = tseg[1];
                            cx = x;
                            cy = y;
                            tcx = tx;
                            tcy = ty;
                            break;
                    case PathIterator.SEG_LINETO:
                            at.transform(seg, 0, tseg, 0, 1);
                            if (Line2D.relativeCCW(x, y, tx, ty,
                                                   seg[0], seg[1]) < 0) {
                                working.moveTo(x, y);
                                working.lineTo(seg[0], seg[1]);
                                working.lineTo(tseg[0], tseg[1]);
                                working.lineTo(tx, ty);
                                working.lineTo(x, y);
                            } else {
                                working.moveTo(x, y);
                                working.lineTo(tx, ty);
                                working.lineTo(tseg[0], tseg[1]);
                                working.lineTo(seg[0], seg[1]);
                                working.lineTo(x, y);
                            }

                            x = seg[0];
                            y = seg[1];
                            tx = tseg[0];
                            ty = tseg[1];
                            break;

                    case PathIterator.SEG_QUADTO:
                            at.transform(seg, 0, tseg, 0, 2);
                            if (Line2D.relativeCCW(x, y, tx, ty,
                                                   seg[2], seg[3]) < 0) {
                                working.moveTo(x, y);
                                working.quadTo(seg[0], seg[1],
                                               seg[2], seg[3]);
                                working.lineTo(tseg[2], tseg[3]);
                                working.quadTo(tseg[0], tseg[1],
                                               tx, ty);
                                working.lineTo(x, y);
                            } else {
                                working.moveTo(x, y);
                                working.lineTo(tx, ty);
                                working.quadTo(tseg[0], tseg[1],
                                               tseg[2], tseg[3]);
                                working.lineTo(seg[2], seg[3]);
                                working.quadTo(seg[0], seg[1],
                                               x, y);
                            }

                            x = seg[2];
                            y = seg[3];
                            tx = tseg[2];
                            ty = tseg[3];
                            break;

                    case PathIterator.SEG_CUBICTO:
                            at.transform(seg, 0, tseg, 0, 3);
                            if (Line2D.relativeCCW(x, y, tx, ty,
                                                   seg[4], seg[5]) < 0) {
                                working.moveTo(x, y);
                                working.curveTo(seg[0], seg[1],
                                                seg[2], seg[3],
                                                seg[4], seg[5]);
                                working.lineTo(tseg[4], tseg[5]);
                                working.curveTo(tseg[2], tseg[3],
                                                tseg[0], tseg[1],
                                                tx, ty);
                                working.lineTo(x, y);
                            } else {
                                working.moveTo(x, y);
                                working.lineTo(tx, ty);
                                working.curveTo(tseg[0], tseg[1],
                                                tseg[2], tseg[3],
                                                tseg[4], tseg[5]);
                                working.lineTo(seg[4], seg[5]);
                                working.curveTo(seg[2], seg[3],
                                                seg[0], seg[1],
                                                x, y);
                            }

                            x = seg[4];
                            y = seg[5];
                            tx = tseg[4];
                            ty = tseg[5];
                            break;

                    case PathIterator.SEG_CLOSE:
                            if (Line2D.relativeCCW(x, y, tx, ty,
                                                   cx, cy) < 0) {
                                working.moveTo(x, y);
                                working.lineTo(cx, cy);
                                working.lineTo(tcx, tcy);
                                working.lineTo(tx, ty);
                                working.lineTo(x, y);
                            } else {
                                working.moveTo(x, y);
                                working.lineTo(tx, ty);
                                working.lineTo(tcx, tcy);
                                working.lineTo(cx, cy);
                                working.lineTo(x, y);
                            }
                            x = cx;
                            y = cy;
                            tx = tcx;
                            ty = tcy;
                }
                pi.next();
            } // while
            ribbon = working;

            g2.setComposite(AlphaComposite.SrcOver);
            Rectangle r = shape.getBounds();
            g2.translate(w*.5-r.width*.5,h*.5+r.height*.5);

            g2.setColor(Color.blue);
            g2.fill(tshape);
	    g2.setColor(new Color(255, 255, 255, 200));
            g2.fill(ribbon);

            g2.setColor(Color.white);
            g2.fill(shape);

            g2.setColor(Color.blue);
            g2.draw(shape);
        }

        public void paint(Graphics g) {
            Graphics2D g2 = (Graphics2D) g;
            Dimension d = getSize();
            g2.setBackground(getBackground());
            g2.clearRect(0, 0, d.width, d.height);
            g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
                                RenderingHints.VALUE_ANTIALIAS_ON);
            drawDemo(d.width, d.height, g2);
        }
    }  // End Demo class
     class DemoControls extends JPanel implements ActionListener {
        Demo demo;
        JTextField tf1, tf2;
        public DemoControls(Demo demo) {
            this.demo = demo;
            setBackground(Color.gray);
            JLabel l = new JLabel("  Text:");
            l.setForeground(Color.black);
            add(l);
            add(tf1 = new JTextField(demo.text));
            tf1.setPreferredSize(new Dimension(60,20));
            tf1.addActionListener(this);
            l = new JLabel("  Size:");
            l.setForeground(Color.black);
            add(l);
            add(tf2 = new JTextField(String.valueOf(demo.fontSize)));
            tf2.setPreferredSize(new Dimension(30,20));
            tf2.addActionListener(this);
        }

        public void actionPerformed(ActionEvent e) {
            try {
                if (e.getSource().equals(tf1)) {
                    demo.text = tf1.getText().trim();
                } else if (e.getSource().equals(tf2)) {
                    demo.fontSize = Integer.parseInt(tf2.getText().trim());
                    if (demo.fontSize < 10) {
                        demo.fontSize = 10;
                    }
                }
                demo.repaint();
            } catch (Exception ex) {}
        }
    } // End DemoControls class
    public  void main(String argv[]) {
        final Stars3D demo = new Stars3D();
        demo.init();
        JFrame f = new JFrame("Java 2D(TM) Demo - Stars3D");
        f.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {System.exit(0);}
        });
        f.getContentPane().add("Center", demo);
        f.pack();
        f.setSize(new Dimension(400,300));
        f.show();
    }
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.