Desenhar Retangulo com o Mouse

6 respostas
O

Boa Tarde a todos…
Seguinte galera, estou precisando acabar um trabalho pra faculdade, o professor pediu que fizessemos um programa em que o usuario desenhasse um retangulo com o mouse, ele pressionaria o botao, e enquanto o mesmo estiver pressionado e o mouse se move, o retangulo vai sendo dimensionado, assim que o botao é solto o retangulo é entaum desenhado, é meio que um estilo de paint brush, gimp, onde vc tem as formas pre-definidas.
Alguem pode me ajudar com isso
Toda a ajuda é bem vinda, Obrigado.

6 Respostas

Rafael_Steil

Qual a sua duvida mais especificamente?

Rafael

O

eu naum estou conseguindo fazer com que, quando o usuario pressione e segure o botao do mouse, o programa vá desenhando o retangulo conforme o usuario move o mouse, como se fosse no gimp mesmo, que vc segura o botao do mouse e o arrasta para a direita e pra baixo e as linhas do retangulo se ajustam

Rafael_Steil

Voce quer que elas fiquem retas (ao inves de seguir o curso do mouse)?

Raael

O

Exatamente.
Se possivel, para um melhor entendimento, abra o gimp ou o paint brush, selecione a forma do retangulo e o desenhe na tela.
Ah desculpe se naum consegui me expressar direito, é que naum imaginei como descrever esse problema
Obrigado

Rafael_Steil

Cara, pessoalmente nao sei exatamente como fazer. Considerando que nao tenha nada pronto (eh um chute, talvez tenha ja na api padrao), como teste inicial, eu tentaria algo assim:
como vc sabe, ha um componente para desenhar uma linha reta do ponto [x1, y1] ao ponto [x2, y2]. (drawLine(int, int, int, int), ou qq coisa assim). Tendo isso em mente, ao clicar e segurar o botao esquerdo do mouse, vc registra a primeira parte das coordenadas (x1, y1). Quando o usuario mexer o mouse, vc pega a nova coordenada (x2, y2) e entao chama o drawLine() para fazer a linha. Se ele mover de novo, vc desenha para o novo x2, y2 (lembrando que o x1, y1 nao muda).
Quando o usuario soltar o clique, vc desenha a linha final.

Isso deve envolver um repaint() a cada movimento do mouse, ou algo mais elaborado. Voce pode tentar comecar por ai.

Rafael

C

Se vc quiser redimensionar o retangulo nao sei como fazer mais se for cria-lo apenas com o clique do mouse
de uma olhada neste codigo as vezes te ajude.

import javax.swing.<em>;

import java.awt.</em>;

import java.awt.Graphics;

import <a href="http://java.io">java.io</a>.<em>;

import java.lang.String.</em>;

import java.awt.event.<em>;

import javax.swing.</em>;

import java.util.<em>;

import java.awt.image.</em>;

class PanelQuad extends JPanel implements MouseListener
{

private Vector vetPonto;

public PanelQuad()

{

setBackground(Color.white);

addMouseListener(this);

vetPonto = new Vector();

}

public void mouseClicked(MouseEvent e)

{

vetPonto.add(e.getPoint());

repaint();

}

public void mouseEntered(MouseEvent e)

{

}

public  void mouseExited(MouseEvent e)

{

}

public void mousePressed(MouseEvent e)

{

}

public void mouseReleased(MouseEvent e)

{

}

public void paint(Graphics g)

{

super.paint(g);

if(vetPonto.size()>0)

{

for(int i=0;i < vetPonto.size();i++)

{
Point p = (Point)vetPonto.elementAt(i);
          Graphics2D comp2D = (Graphics2D)g;
          comp2D.setColor(Color.blue); 
          Rectangle rectang = new Rectangle(p,new     Dimension(40,30));
          comp2D.draw(rectang); 
       }   
  }
}

}

public class Teste extends JFrame

{

private PanelQuad panel;

public Teste()

{

super(Evento teste);

setSize(400,300);

setLocation(100,100);

setBackground(Color.white);

getContentPane().add(new PanelQuad());

show();

}

public static void main()

{

new Teste();

}

}

Criado 16 de março de 2005
Ultima resposta 23 de mar. de 2005
Respostas 6
Participantes 3