Como faço para transformar em botões?

3 respostas
V

Pessoal boa tarde;
Gostaria de saber como faço para senhar esses lotes em botões.

E ao clicar ele fizesse alguma ação, tipo dizer o nome dele mesmo.

grata deste já

Classe principal

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.geom.AffineTransform;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import javax.swing.ImageIcon;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JScrollPane;

public class Principal extends JFrame 
{
	private static final long serialVersionUID = -1218226422095257926L;

	/** array de bytes que armazena a imagem */
	private Image img;
	private JMenuBar menuBar;
	private JMenu menu;
	private JMenu menu2;
	private JMenuItem abrir;
	private JMenuItem salvar;
	private JMenuItem fechar;
	private JMenuItem sair;
	
	private JMenuItem localizar;
	private JMenuItem copiar;
	private JMenuItem colar;

	/**
	 * Construtor
	 */
	public Principal() 
	{
		super("Cemiterio Descanse em Paz");
	}
	
	/**
	 * Carrega o icone  
	*/
	public void mudarIcone() 
	{
		ImageIcon img = new ImageIcon("resources/icone.PNG");
		setIconImage(img.getImage());
	}

	/**
	 * Inicia  
	*/
	private void iniciar() 
	{
		setVisible(true);
		setLocation(200,100);	
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);		
		mudarIcone();	
	}
	
	/**
	 * Ajusta a tela para metade da area util do desktop 
	 */
	private void ajustarTamanho() 
	{
		Toolkit kit = Toolkit.getDefaultToolkit();
		Dimension screenSize = kit.getScreenSize();		
		// Ajusta para a metade da área util do desktop
		setSize((int)(screenSize.getWidth()/2),
                (int)(screenSize.getHeight()/2));
	}

	
	/**
	 * Carrega a imagem de fundo, e chama o metodo que ira desenhar os lotes. 
	 */
	private void fundo()
	{
		// Carrega imagem na memoria para evitar todo repaint buscar em disco
		byte [] imagem = carregaImagem();
		img = new ImageIcon(imagem).getImage();
		
		/**
		 * Esta é uma classe anônima. Um componente que pinta uma imagem
		 */
		JComponent comp = new JComponent() 
		{
			private static final long serialVersionUID = 1L;
			protected void paintComponent(Graphics g) 
			{
				// Transformar para graphics 2d
				Graphics2D g2d = (Graphics2D) g;
				AffineTransform tx = new AffineTransform();
				g2d.drawImage(img, tx, this);
				Desenho_Lote lote = new Desenho_Lote();
				lote.desenhar(g2d);
				// O segredo do JPanel com scroll está aqui... preffered igual ao tamanho da imagem
				setPreferredSize(new Dimension(img.getWidth(null),img.getHeight(null)));
			}
		};
		setSize(800, 600);
		JScrollPane scroll = new JScrollPane(comp);
		add(scroll);
		// Determina operação default ao tentar fechar janela
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}
	
	/**
	 * Carrega a imagem de fundo 
	 **/
	private byte[] carregaImagem() 
	{
		try 
		{			
			File f = new File("resources/fundo.PNG");
			FileInputStream fis = new FileInputStream(f);
			byte [] imagem = new byte[(int) f.length()];
			int qtdLido = fis.read(imagem);			
			if(qtdLido != f.length()) 
				throw new RuntimeException("Erro na leitura do arquivo");					
			return imagem;
		} catch (IOException e) {
			throw new RuntimeException("Erro ao ler imagem",e);
		}
	}
	
	/**
	 * Faz o menu 
	 */
	public void Menu() 
	{	
		// Iniciar componentes
		menuBar = new JMenuBar();
		
		menu = new JMenu("Arquivo");
		menu2 = new JMenu("Exibir");
		
		abrir = new JMenuItem("Abrir");
		salvar = new JMenuItem("Salvar");
		fechar = new JMenuItem("Fechar");
		sair = new JMenuItem("Sair");
		
		localizar = new JMenuItem("Localizar");
		copiar = new JMenuItem("Copiar");
		colar = new JMenuItem("Colar");
		
		menuBar.add(menu);
		menuBar.add(menu2);
		
		menu.add(abrir);
		menu.add(salvar);
		menu.add(fechar);
		menu.addSeparator();
		menu.add(sair);
	
		menu2.add(copiar);
		menu2.add(colar);
		menu2.addSeparator();
		menu2.add(localizar);
		
		setJMenuBar(menuBar);	
	}
	
	
	/**
	 * Método principal
	 */
	public static void main(String[] args) 
	{		
		Principal exemplo = new Principal();
		exemplo.fundo();
		exemplo.iniciar();
		exemplo.ajustarTamanho();
		exemplo.Menu();
	}
}

Codigo que desenha os lotes

import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JComponent;

public class Desenho_Lote extends JComponent 
{
	private static final long serialVersionUID = 1378798417518948189L;
	public static int cont = 1;

	protected static void desenhaLote(Graphics g, int x, int y, int c, int l, int tam, int num)
	{
		for(int contC = 0; contC < c; contC++)
		{
			for(int contL = 0; contL < l; contL++)
			{
				//cor do quadrado
				g.setColor( new Color( 255, 239, 213));
				//dimensão do tamanho dos quadrados
				g.fillRect(x,y,tam,tam);
				//Pinta as bordas de preto
				g.setColor( Color.black );
				//desenha o quadrado
				g.drawRect(x, y, tam, tam);
				//font da escrita
				g.setFont( new Font( "Monotype Corsiva", Font.PLAIN, 16 ));
				//Pinta a fonte de preto
				g.setColor( Color.black );
				//Pinta a fonte de preto
				g.drawString("Lote " + num, x+25, y+45); 
				
				y += 125;
				num++;
			}
			x += 125;
			y =25;
		}
	}
	  
	protected static void desenhaLotesCB(Graphics g, int x, int y, int c, int l, int tam, int num)
	{
		for(int contC = 0; contC < c; contC++)
		{
			for(int contL = 0; contL < l; contL++)
			{
				//cor do quadrado
				g.setColor( new Color( 255, 239, 213));
				//onde sera pintado
				g.fillRect(x,y,tam,tam);
				//desenha o quadrado
				g.setColor( Color.black );
				g.drawRect(x, y, tam, tam);
				//font da escrita
				g.setFont( new Font( "Monotype Corsiva", Font.PLAIN, 16 ));
				g.setColor( Color.black );
				g.drawString("Lote " + num, x+25, y+45);
				num++;
			}
			x += 125;
		}
	}
	
	protected static void desenharOutros(Graphics g, int x, int y, int largura, int altura, String nome)
	{
		//cor do quadrado
		g.setColor( new Color( 233, 150, 122));
		//onde sera pintado
		g.fillRect(x, y,largura, altura);
		//desenha o quadrado
		g.setColor( Color.black );
		g.drawRect(x, y, largura, altura);
		//Fonte(nome da fonte, estilo da fonte, tamanho da fonte)
		g.setFont( new Font( "Monotype Corsiva", Font.PLAIN, 16 ));
		g.setColor( Color.black );
		g.drawString(nome, ((largura/2) + x) - 15, ((altura/2) + y));	
	}
	
	protected static void desenharRuasVertical(Graphics g, int x, int y, int largura, int qtde)
	{
		for(int cont = 0; cont < qtde; cont++)
		{
			g.setColor(Color.black);
			g.drawLine(x, y, largura, y);
			x += 125;
			largura += 125;
			if((x == 605)&&(qtde == 8))
			{
				x = 730;
				largura = 775;
			}
		}
	}
	
	protected static void desenharRuaVertical(Graphics g, int x, int y, int largura,  int qtde)
	{		
		for (int i = 0; i < qtde; i++) {
			g.setColor(Color.black);
			g.drawLine(x, y, largura, y);
			y += 125;
		}
	}
	
	protected static void desenharRuasHorizontal(Graphics g, int xC, int yC, int yC2, int coluna, int linha) 
	{
		for(int contQ = 0; contQ < coluna; contQ++)
		{
			yC = 105;
			yC2 = 150;
			for (int i = 0; i < linha; i++) 
			{
				g.setColor(Color.black);
				g.drawLine(xC, yC, xC, yC2);
				yC +=125;
				yC2 +=125;
			}
			xC += 125;
		}
	}
	
	protected static void desenharRuaHorizontal(Graphics g, int x, int y, int largura, int qtde)
	{		
		for (int i = 0; i < qtde; i++) 
		{
			g.setColor(Color.black);
			g.drawLine(x, y, x, largura);
			x += 125;
		}
	}
	
	protected void desenhar(Graphics g) 
	{	
		/**
		 *	Desenha as ruas em vertical
		 **/
		desenharRuaVertical(g, 65, 130, 1190, 3);
		
		
		/**
		 *	Desenha as ruas em horizontal
		 **/
		desenharRuaHorizontal(g, 130, 65, 440, 9);
		
		
		/**
		 *	Desenha os lote do lado esquerdo, de 1 ate o lote 16
		 **/
		desenhaLote(g, 25, 25, 4, 4, 80, 1);
			
		
		/**
		 *	Desenha os lote de cima da capela, lote 17 e 18
		 **/
		desenhaLotesCB(g, 525, 25, 2, 1, 80, 17);		
	
		
		/**
		* Desenha a capela no meio do cenario
		*/
		desenharOutros(g, 525, 150, 205, 205, "Capela");	
	
		
		/**
		 *	Desenha os lote de baixo da capela, lote 19 e 20
		 **/
		desenhaLotesCB(g, 525, 400, 2, 1, 80, 19);
		
		
		/**
		 *	Desenha os lote do lado esquerdo, de 21 ate o lote 36
		 **/
		desenhaLote(g, 775, 25, 4, 4, 80, 21);
		
		
		/**
		 *	Desenha a entrada 
		 **/
		desenharOutros(g, 525, 545, 208, 155, "Entrada");
		
		
		/**
		 *	Desenha a entrada o estacionamento 
		 **/
		desenharOutros(g, 25, 545, 350, 400,"Estacionamento");
		
		
		/**
		 *	Desenha todas as linha que serão as ruas, da linha 1 
		 **/
		desenharRuasVertical(g, 105, 65, 150, 9);
		
	
		/**
		 *	Desenha todas as linha que serão as ruas, da linha 2 
		 **/
		desenharRuasVertical(g, 105, 190, 150, 8);
		
				
		/**
		 *	Desenha todas as linha que serão as ruas, da linha 3 
		 **/
		desenharRuasVertical(g, 105, 315, 150, 8);

	
		/**
		 *	Desenha todas as linha que serão as ruas, da linha 4 
		 **/
		desenharRuasVertical(g, 105, 440, 150, 9);
		
		
		/**
		 *	Desenha todas as linha que serão as ruas, da coluna 1 ate a 4 
		 **/		
		desenharRuasHorizontal(g, 65, 105, 150, 4, 3);
		
		
		/**
		 *	Desenha todas as linha que serão as ruas, da coluna 5 
		 **/
		g.drawLine(565, 105, 565, 150);
		g.drawLine(565, 355, 565, 400);
			
		
		/**
		 *	Desenha todas as linha que serão as ruas, da coluna 6 
		 **/
		g.drawLine(690, 105, 690, 150);
		g.drawLine(690, 355, 690, 400);
		
		
		/**
		 *	Desenha todas as linha que serão as ruas, da coluna 7 ate 10 
		 **/
		desenharRuasHorizontal(g, 815, 105, 150, 4, 3);
			
		
		/**
		 *	Desenha a linha da entrada que vai ate os lotes 
		 **/
		g.drawLine(630, 440, 630, 545);
		
	}
}

3 Respostas

Ironlynx

Que diabos é SENHAR???

Associe um listener a cada um.

V

Que diabos é SENHAR???

Associe um listener a cada um.

V

Desculpe…

eu queria dizer desenhar…

Criado 14 de março de 2009
Ultima resposta 16 de mar. de 2009
Respostas 3
Participantes 3