Ajuda(desenhar quadrado)

2 respostas
J

bom pessoal tou querendo adaptar a equação da reta para desenhar um quadrado mais não tou conseguindo
eu keria a opnião de vc’s como faço isso

import java.awt.*;
import java.awt.event.*;//IMPORTAÇÃO DAS BIBLIOTECAS
import javax.swing.*;
import java.awt.Graphics;


// CRIAÇÃO DO FRAME
public class Quadrado extends JFrame{
  JLabel botao;
  int x1, y1, x2, y2;// variaveis das coordenadas
  String dados;//variavel responsavel para pegar os dados
  JLabel palavra;



  public Quadrado() {//classe construtor
    super("Computação Grafica");

    // exibição do frame
    Container c = getContentPane();
    c.setLayout(new BorderLayout());

    // Cria um JLabel
   botao = new JLabel();
    c.add(botao, BorderLayout.CENTER);
    // Cria um botão

    JButton btn = new
      JButton("<<Desenhar Um Quadrado>>");
    btn.addActionListener(
      new ActionListener(){
        public void actionPerformed(ActionEvent e){
            Graphics graphics = botao.getGraphics();
             Color corAnt = graphics.getColor();
            // função para pegar os dados que são inserido pelo usuario
                        dados = JOptionPane.showInputDialog("Digite do Eixo X1: ");
			x1 = Integer.parseInt(dados);
			dados="";
                       

                        dados = JOptionPane.showInputDialog("Digite do Eixo Y1: ");
			y1 = Integer.parseInt(dados);
			dados="";
                  
			
                        dados = JOptionPane.showInputDialog("Digite do Eixo X2: ");
			x2 = Integer.parseInt(dados);
			dados="";

			dados = JOptionPane.showInputDialog("Digite do Eixo Y2: ");
			y2 = Integer.parseInt(dados);
			dados="";
                        
                                              

                       if(y1==y2){
                           DesenhaQuadrado(x1=x1+60,y1=y1+60,x2=x2+60,y2=y2+60);
                           DesenhaQuadradol(x1=x1-20,y1=y1-20,x2=x2-20,y2=y2-20);
                       }else{
                           if(x1==x2){
                               DesenhaQuadrado(x1,y1,x2,y2);
                               DesenhaQuadrado(x1=x1-20,y1,x2=x2-20,y2);
                           }
                       }
                                 
        }
      }
    );

    // Adiciona o botão à janela
   c.add(btn, BorderLayout.SOUTH);
setSize(300,300);
    setVisible(true);
   
  }



  public void DesenhaQuadrado(int x1, int y1, int x2, int y2)
{
	//float m, b;// calcular a inclinação da reta
	int x, y;//variaveis auxiliares

        Graphics graphics = botao.getGraphics();//função responsavel para
                                                 //exibir os pixel na tela

                //se as coordenas y1 e y2 forem iguais
                //desenha uma reta na horizontal
                    if (y1 == y2)
		{
			
                        for (x=x1;x<=x2;x++)
				graphics.drawLine(x,y1,x,y1);
                                
                        }
		else
		{
                //se as coordenas x1 e x2 forem iguais
                //desenha uma reta na horizontal
			if (x1==x2)
			//for(y=y1;y<=y2;y++){
                        {
				for(y=y1;y<=y2;y++)
					graphics.drawLine(x1,y,x1,y);
                                        

                                
                        }
                         
			
}

}

        //função principal
  public static void main(String args[]){
    Quadrado a = new Quadrado();
    a.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  }
}

2 Respostas

B
jef_fe:
if(y1==y2){
                           DesenhaQuadrado(x1=x1+60,y1=y1+60,x2=x2+60,y2=y2+60);
                           DesenhaQuadradol(x1=x1-20,y1=y1-20,x2=x2-20,y2=y2-20);
                       }else{
                           if(x1==x2){
                               DesenhaQuadrado(x1,y1,x2,y2);
                               DesenhaQuadrado(x1=x1-20,y1,x2=x2-20,y2);
                           }
                       }
De quê forma você está querendo que isto funcione? Ou aliás o que é para o desenha quadrado fazer, você dar pontos para ele desenhar, ou dar equações?
J

eu pensei assim

if(y1==y2){  // desenha uma reta na honrizontal
     DesenhaQuadrado(x1=,y1,x2,y2);  //aki desenha uma reta
     DesenhaQuadradol(x1=x1-20,y1=y1-20,x2=x2-20,y2=y2-20);// aki desenha outra reta embaixo dessa  
 }else{ 
     if(x1==x2){  // desenha uma reta vertical
         DesenhaQuadrado(x1,y1,x2,y2);  //aki desenha uma reta vertical
         DesenhaQuadrado(x1=x1-20,y1,x2=x2-20,y2);  //aki desenha outra reta na vertical do lado
     
// assim fexando o quadrado
  }  
 }

lembrando que os valores tem k ser y1==y2 e x1!=x2

Criado 10 de outubro de 2009
Ultima resposta 10 de out. de 2009
Respostas 2
Participantes 2