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);
}
}