Dúvidas GUIs - Imagens gráficas

5 respostas
hackum
//Shapes.java
//Demonstra o desenho de diferentes formas.

import java.awt.Graphics;
import javax.swing.JPanel;

public class Shapes extends JPanel{
	
	private int choice; //escolha do usuário de qual forma desenhar
	
	//construtor configura a escolha do usuário
	public Shapes(int userChoise)
	{
		choice = userChoise;
	}
	
	//desenha uma cascata de formas que iniciam do canto superior esquerdo
	public void paintComponent(Graphics g)
	{
		super.paintComponent(g);
		
		for (int i = 0; i < 10; i++)
		{
			//seleciona a forma com base na escolha do usuário
			switch (choice)
			{
			
			case 1: //desenha retângulos
				g.drawRect(10 + i * 10, 10 + i * 10, 50 + i * 10, 50 + i * 10);
				break;
			case 2: //desenha elipses
				g.drawOval(10 + i * 10, 10 + i * 10, 50 + i * 10, 50 + i * 10);
				break;
				
			}
			
		}
		
	}

}
//ShapeTest.java
//Aplicativo de teste que exibe a classe Shapes

import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class ShapesTest {
	
	public static void main(String args[])
	{
		//obtém a escolha do usuário
		String input = JOptionPane.showInputDialog("Digite 1 para desenhar retângulos: \n" +
				                                   "Digite 2 para desenhar ovais: ");
		
		int choice = Integer.parseInt(input); //converte a entrada em int
		
		//cria o painel com a entrada do usuário
		Shapes panel = new Shapes(choice);
		
		JFrame application = new JFrame(); //cria um novo JFrame
		
		application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
		application.add(panel); 
		application.setSize(300, 300);
		application.setVisible(true);
	}

}

Poderiam me explicar esses códigos ?

5 Respostas

ViniGodoy

Esses tutoriais podem:
Uma visão rápida sobre o Java 2D
Pintando no java 2D
O fantasma do Pacman (aqui tem um exemplo funcional)
Trabalhando com imagens

Seria bom vc ressaltar o que vc não entendeu. Pq os comentários desses seu código são bastante explicativos.

hackum

Olá, ViniGodoy!

Me desculpe por não dá detalhes sobre a minha dúvida.
Eu entendi o código, mas certos códigos eu não entendi, vejamos alguns:

Shapes extends JPanel

(Graphics g)  

super.paintComponent(g);

 g.drawRect(10 + i * 10, 10 + i * 10, 50 + i * 10, 50 + i * 10);  
         
  g.drawOval(10 + i * 10, 10 + i * 10, 50 + i * 10, 50 + i * 10);  

   JFrame application = new JFrame();

      application.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );  
        application.add(panel);   
        application.setSize(300, 300);  
        application.setVisible(true);

Pq não chamou o método paintComponent ?

ViniGodoy

Esse método é automaticamente chamado pelo Swing, sempre que a tela precisa ser repintada.

Se ele não foi chamado, pode ser que o seu painel não esteja visível. No caso, o JFrame é criado por padrão com o BoderLayout. Talvez vc devesse inicia-lo assim:

JFrame application = new JFrame(new BorderLayout()); //cria um novo JFrame application.add(panel, BorderLayout.CENTER);

hackum

E isso ?

g.drawRect(10 + i * 10, 10 + i * 10, 50 + i * 10, 50 + i * 10);    
           
  g.drawOval(10 + i * 10, 10 + i * 10, 50 + i * 10, 50 + i * 10);
ViniGodoy

Essas são as funções que desenham as elipses ou retângulos.

Ela aceita 4 parâmetros: x, y, altura e largura da forma desenhada.

Criado 25 de abril de 2011
Ultima resposta 25 de abr. de 2011
Respostas 5
Participantes 2