Desenho e interface

1 resposta
R

Boa tarde,
Criei um código mas não estou conseguindo por a classe do desenho dentro da classe da interface…
Alguém poderia me ajudar?
Muito obrigado

package guj;  
   
 import java.awt.Color;  
 import java.awt.Dimension;  
 import java.awt.Graphics;  
 import java.awt.Graphics2D;  
 import java.awt.event.MouseEvent;  
 import java.awt.event.MouseListener;  
 import java.awt.event.MouseMotionListener;  
 import java.awt.geom.AffineTransform;  
 import java.awt.image.BufferedImage;  
 import java.io.File;  
 import java.io.IOException;  
 import javax.imageio.ImageIO;  
 import javax.swing.JFileChooser;  
 import javax.swing.JFrame;  
 import javax.swing.JOptionPane;  
 import javax.swing.JPanel;
 import java.awt.BasicStroke; 
   
  public class JPanelDesenho extends JPanel {  
   
     private BufferedImage bufferedImage;//buffer  
     private BufferedImage bufferedReta;  
     private BufferedImage fundo;  
     private int x;  
     private int y;  
   
     public JPanelDesenho() {  
         super(true);//bufferstrategy '2', acelera a atualizaçao da imagem  
         int width = 900;  
         int height = 600;  
         bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);// cria um buffer com o tamanho  
         bufferedReta = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB); // auxiliar para reta  
   
   
         //inicializar com funddo branco caso de erro ao carregar o arquivo  
         Graphics2D gi = bufferedImage.createGraphics();  
         gi.setColor(Color.WHITE); //seleciona cor de fundo  
         gi.fillRect(0, 0, bufferedImage.getWidth(), bufferedImage.getHeight());//pinta tudo com a cor selecionada  
         //cria uma janela para carregar a imagem  
         //JFileChooser fileChooser = new JFileChooser();  
         //fileChooser.showOpenDialog(null);  
         //pega o arquivo  
         File arquivo = new File("C:/Documents and Settings/Adriano/Desktop/Java ProjetoII/grid.png");//arquivo, vc pode colocar "new File("c:/pasta/imagem.jpg");"  
         try {  
             fundo = ImageIO.read(arquivo); //carrega a imagem no buffer  
   
             //compacta a imagem (opcional)  
             AffineTransform at = AffineTransform.getScaleInstance((double) 900 / fundo.getWidth(), (double) 600 / fundo.getHeight());//cria a transformacao  
             gi.drawRenderedImage(fundo, at);//pinta e transforma a imagem real no bufferedImage  
   
             //vc pode substituir o codigo acima de transformacao pelo codigo abaixo  
             //gi.drawImage(bufferedImage, 0, 0, null);  
   
         } catch (IOException ex) {  
            JOptionPane.showMessageDialog(null, "Erro ao carregar a imagem");  
   
         }  
         gi.dispose(); 
         	
         	
         	
		/*javax.swing.JTextArea teste = new javax.swing.JTextArea();  
		javax.swing.JScrollPane scrollPane = new javax.swing.JScrollPane(teste);*/  
          
		/*JOptionPane pane = new JOptionPane("Digite o tamanho em\nmetros desta parede: \n\n", JOptionPane.INFORMATION_MESSAGE);  
		JDialog dialog = pane.createDialog(null, "Atenção!!!");  
		dialog.setSize(300,300);  
		dialog.setVisible(true);
         
		// Como a textArea é editável, tudo o que eu digitar lá, vai continuar dentro dela... Viva a Orientação a Objetos!!  
		System.out.println( teste.getText() );*/
	
         	 
   
         Graphics gr = bufferedReta.createGraphics();  
         gr.setColor(Color.WHITE); //seleciona cor de fundo  
         gr.fillRect(0, 0, bufferedReta.getWidth(), bufferedReta.getHeight());//pinta tudo com a cor selecionada  
         gr.drawImage(bufferedImage, 0, 0, null);  
         gr.dispose();  
   
         addMouseListener(new AcaoMouse());//acao de clike  
         addMouseMotionListener(new AcaoMouse());//acao de arrastar (drag)  
     }  
   
     @Override  
     public void paintComponent(Graphics g) {  
         super.paintComponent(g);  
         g.setColor(Color.WHITE); //seleciona cor de fundo  
         g.fillRect(0, 0, bufferedImage.getWidth(), bufferedImage.getHeight());//pinta tudo com a cor selecionada  
         g.drawImage(bufferedReta, 0, 0, null);//pinta com a reta  
         g.dispose();  
     }  
   
     private class AcaoMouse implements MouseListener, MouseMotionListener {  
           
         public void mouseClicked(MouseEvent e) {  
             x = e.getX();  
             y = e.getY();  
             pinta();  
             updateUI();//Atualiza a imagem do jpanel  
         }  
   
         public void mousePressed(MouseEvent e) {
         	 x = e.getX();  
             y = e.getY();  
             pinta();  
             updateUI();//Atualiza a imagem do jpanel 
         }  
   
         public void mouseReleased(MouseEvent e) {  
         }  
   
         public void mouseEntered(MouseEvent e) {  
         }
         
         public void mouseDragged(MouseEvent e) {  
             x = e.getX();  
             y = e.getY();  
             pinta();  
             updateUI();//Atualiza a imagem do jpanel 
         }  
   
         public void mouseMoved(MouseEvent e) {  
         }   
   
         public void mouseExited(MouseEvent e) {
         	
         	//CRIAR BOTÃO PARA REALIZAR A FUNÇÃO ABAIXO
         	
         	 pinta();  
             Graphics gDaImagem = bufferedImage.createGraphics();//pega o g da imagem  
             gDaImagem.drawImage(bufferedReta, 0, 0, null);//desenha a reta final na imagem  
             gDaImagem.dispose();  
             updateUI();  
             	
             /*String tamanhoParede;
             tamanhoParede = JOptionPane.showInputDialog(null,"Digite o tamanho em\nmetros desta parede: \n", "Atenção!!!", JOptionPane.INFORMATION_MESSAGE);
             System.out.println(tamanhoParede);
             int tamanho2 = Integer.parseInt(tamanhoParede);
             
             pinta(e.getX()+tamanho2, e.getY());
             gDaImagem = bufferedImage.createGraphics();//pega o g da imagem  
             gDaImagem.drawImage(bufferedReta, 0, 0, null);//desenha a reta final na imagem  
             gDaImagem.dispose();  
             updateUI();*/  
         } 
   
         private void pinta() {  
             Graphics2D gDaReta = bufferedReta.createGraphics();  
             gDaReta.drawImage(bufferedImage, 0, 0, null); //desenha a imagem gravada  
             gDaReta.setColor(Color.BLACK);//seta a cor da reta  
             gDaReta.setStroke(new BasicStroke(2.0f));
             gDaReta.drawRect(x, y, 80, 50);  
             gDaReta.dispose();  
         }  
     }  
   
     public static void main(String[] args) {  
         //Teste  
         JFrame jFrame = new JFrame();  
         jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
         JPanelDesenho desenho = new JPanelDesenho();  
         desenho.setPreferredSize(new Dimension(900, 600));  
         jFrame.getContentPane().add(desenho);  
         jFrame.setResizable(false);  
         jFrame.pack();  
         jFrame.setVisible(true);  
     }  
 }

1 Resposta

luciano2

Só falta você dizer oq está acontecendo de errado.

Criado 30 de março de 2011
Ultima resposta 30 de mar. de 2011
Respostas 1
Participantes 2