Graphics2d

5 respostas
valramos

estou estudando com o livro Java Como Programa ed 8. Deitel

Encontrei o seguinte codigo:

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.GeneralPath;
import java.util.Random;
import javax.swing.JPanel;

public class Shapes2JPanel extends JPanel {
	
	public void paintComponent( Graphics g ){
		
		super.paintComponent(g);
		
		Random ramdom = new Random();
		
		int[] xPoints = {55, 67, 109, 73, 83, 55, 27, 37, 1, 43};
		int[] yPoints = {0, 36, 36, 54, 96, 72, 96, 54, 36, 36};
		
		Graphics2D g2d = (Graphics2D) g;
		GeneralPath star = new GeneralPath();
		
		star.moveTo(xPoints[0], yPoints[0]);
		
		  for (int count = 1; count < xPoints.length; count++) {

			  star.lineTo(xPoints[count], yPoints[count]);
			  
			  star.closePath();
			  
			  g2d.translate(150, 150);
		  
			  for (int count1 = 1; count1 <= 20; count1++) {
		
				  g2d.rotate(Math.PI / 10.0);
				 
				 g2d.setColor(new Color(ramdom.nextInt(256),
						   ramdom.nextInt(256), ramdom.nextInt(256)));
			    	g2d.fill(star);
			}
		 }	
	}
}

import java.awt.Color;
import javax.swing.JFrame;

public class Shapes2 {

	 public static void main (String[] args){
		 JFrame frame = new JFrame ("Escrevendo 2D Shape");
		 
		 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		 
		 Shapes2JPanel shapes2JPanel = new Shapes2JPanel();
		 
		 frame.add(shapes2JPanel);
		 
		 frame.setBackground(Color.WHITE);
		 
		 frame.setSize(315,300);
		 
		 frame.setVisible(true);
		 
		 
	 }
}

que me mostraria a seguinte figura!

mas ta me mostrando assim

alguem saberia me dizer pq nao mostras as estrelas?

fiz do jeito que ta no livro!!!

5 Respostas

Alfredo_Barbosa

você tem que declarar as classes em arquivos separados, compilar cada uma e rodar a main

valramos

Caro alfredo!
Está em classes diferentes. É que na hora de postar juntei em um codigo so.
mas está em classes separadas

Marky.Vasconcelos

Tentei rodar rapidamente, mas realmente não funciona, não tive tempo de ver direito mas parece correta.

A classe que testei.

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.GeneralPath;
import java.util.Random;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class StarDraw extends JPanel {
	private static final long serialVersionUID = 1L;

	public void paintComponent(Graphics g) {
		super.paintComponent(g);

		Random ramdom = new Random();
		int[] xPoints = { 55, 67, 109, 73, 83, 55, 27, 37, 1, 43 };
		int[] yPoints = { 0, 36, 36, 54, 96, 72, 96, 54, 36, 36 };

		Graphics2D g2d = (Graphics2D) g.create();
		GeneralPath star = new GeneralPath();

		star.moveTo(xPoints[0], yPoints[0]);

		for (int count = 1; count < xPoints.length; count++) {
			star.lineTo(xPoints[count], yPoints[count]);

			star.closePath();

			g2d.translate(150, 150);

			for (int count1 = 1; count1 <= 20; count1++) {
				g2d.rotate(Math.PI / 10.0);

				g2d.setColor(new Color(ramdom.nextInt(256),
						ramdom.nextInt(256), ramdom.nextInt(256)));
				g2d.fill(star);
			}
		}
		g2d.dispose();
	}

	public static void main(String[] args) {
		JFrame frame = new JFrame("Escrevendo 2D Shape");

		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		StarDraw shapes2JPanel = new StarDraw();

		frame.add(shapes2JPanel);

		frame.setBackground(Color.WHITE);

		frame.setSize(315, 300);

		frame.setVisible(true);
	}
}
Marky.Vasconcelos

Alias, a seguinte mostrou uma figura parecida, mas ainda não é o mesmo resultado:

package com.draw;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.geom.GeneralPath;
import java.util.Random;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class StarDraw extends JPanel {
	private static final long serialVersionUID = 1L;

	public void paintComponent(Graphics g) {
		super.paintComponent(g);

		Random ramdom = new Random();
		int[] xPoints = { 55, 67, 109, 73, 83, 55, 27, 37, 1, 43 };
		int[] yPoints = { 0, 36, 36, 54, 96, 72, 96, 54, 36, 36 };

		Graphics2D g2d = (Graphics2D) g.create();
		GeneralPath star = new GeneralPath();

		star.moveTo(xPoints[0], yPoints[0]);
		for (int count = 1; count < xPoints.length; count++) {
			star.lineTo(xPoints[count], yPoints[count]);

//			star.closePath();

			g2d.translate(10, 10);

			for (int count1 = 1; count1 <= 20; count1++) {
				g2d.rotate(Math.PI / 10.0);

				g2d.setColor(new Color(ramdom.nextInt(256),
						ramdom.nextInt(256), ramdom.nextInt(256)));
				g2d.fill(star);
			}
		}
		g2d.dispose();
	}

	public static void main(String[] args) {
		JFrame frame = new JFrame("Escrevendo 2D Shape");

		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		StarDraw shapes2JPanel = new StarDraw();

		frame.setContentPane(shapes2JPanel);
//		frame.add(shapes2JPanel,"Center");

		frame.setBackground(Color.WHITE);

		frame.setSize(315, 300);

		frame.setVisible(true);
	}
}
valramos

Obrigado Marky.

Melhor que nada! hehehehehe

Abraço

Concluido!!!

Criado 24 de fevereiro de 2011
Ultima resposta 25 de fev. de 2011
Respostas 5
Participantes 3