Oi galera, estou querendo adicionar varios pontos usando o graphics 2D, estou fazendo load à imagem de fundo e agora queria
adicionar varios circulos para marcar a possição de varias pessoas na sala. O problema é que o numero de pessoas possoas
pode variar de uma momento para o outro. Como faço para adicionar e remover pontos da imagem? Como tenho neste momento
no maximo posso ter 5 pessoas e quando tenho menos as coordenadas ficam negativas para ficar fora do mapa. Mas queria
uma solução melhor para resolver este problema.
Obrigado
Class Mapa
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package testes;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.JPanel;
/**
*
* @author Ang3lo
*/
public class Mapa extends JPanel
{
private BufferedImage img = null;
private String utilizador = " ";
private String utilizador1 = " ";
private String utilizador2 = " ";
private String utilizador3 = " ";
private String utilizador4 = " ";
private String utilizador5 = " ";
private int xUtilizador = 0;
private int yUtilizador = 0;
private int xUtilizador1 = -30;
private int yUtilizador1 = -30;
private int xUtilizador2 = -30;
private int yUtilizador2 = -30;
private int xUtilizador3 = -30;
private int yUtilizador3 = -30;
private int xUtilizador4 = -30;
private int yUtilizador4 = -30;
private int xUtilizador5 = -30;
private int yUtilizador5 = -30;
//******************************************************************************
// metodos set para atribuir valor as variaveis
public void setUtilizador(String utilizador) {
this.utilizador = utilizador;
}
public void setUtilizador1(String utilizador1) {
this.utilizador1 = utilizador1;
}
public void setUtilizador2(String utilizador2) {
this.utilizador2 = utilizador2;
}
public void setUtilizador3(String utilizador3) {
this.utilizador3 = utilizador3;
}
public void setUtilizador4(String utilizador4) {
this.utilizador4 = utilizador4;
}
public void setUtilizador5(String utilizador5) {
this.utilizador5 = utilizador5;
}
public void setxUtilizador(int xUtilizador) {
this.xUtilizador = xUtilizador;
}
public void setxUtilizador1(int xUtilizador1) {
this.xUtilizador1 = xUtilizador1;
}
public void setxUtilizador2(int xUtilizador2) {
this.xUtilizador2 = xUtilizador2;
}
public void setxUtilizador3(int xUtilizador3) {
this.xUtilizador3 = xUtilizador3;
}
public void setxUtilizador4(int xUtilizador4) {
this.xUtilizador4 = xUtilizador4;
}
public void setxUtilizador5(int xUtilizador5) {
this.xUtilizador5 = xUtilizador5;
}
public void setyUtilizador(int yUtilizador) {
this.yUtilizador = yUtilizador;
}
public void setyUtilizador1(int yUtilizador1) {
this.yUtilizador1 = yUtilizador1;
}
public void setyUtilizador2(int yUtilizador2) {
this.yUtilizador2 = yUtilizador2;
}
public void setyUtilizador3(int yUtilizador3) {
this.yUtilizador3 = yUtilizador3;
}
public void setyUtilizador4(int yUtilizador4) {
this.yUtilizador4 = yUtilizador4;
}
public void setyUtilizador5(int yUtilizador5) {
this.yUtilizador5 = yUtilizador5;
}
//******************************************************************************
public void desenha()
{
//Para optimizar o programa apenas é carregado uma vez o ficheiro da
//imagem do mapa
if(img == null) //caso nao se tenha carregado ainda a imagem
{
try {
img = ImageIO.read(new File("c:\\mapa.png"));
repaint();
} catch (IOException ex) {
Logger.getLogger(Mapa.class.getName()).log(Level.SEVERE, null, ex);
}
}
//caso a imagem já tenha sido carregada
else
repaint();
}
//metodo que dimensiona a janela para o tamanho da imagem
@Override
public Dimension getPreferredSize()
{
if (img == null) {
return new Dimension(1000,1000);
}
else {
return new Dimension(img.getWidth(null), img.getHeight(null));
}
}
//metodo onde se desenha a imagem do mapa e os pontos da coordenada
@Override
public void paintComponent(Graphics g)
{
super.paintComponent(g);
g.drawImage(img, 0, 0, null);
//utlizador da conta
g.setColor(Color.RED);
g.drawString(this.utilizador, this.xUtilizador, (this.yUtilizador - 2 ));
g.fillOval(this.xUtilizador, this.yUtilizador, 10, 10);
//utlizador 1
g.setColor(Color.BLUE);
g.drawString(this.utilizador1, this.xUtilizador1, (this.yUtilizador1 - 2));
g.fillOval(this.xUtilizador1, this.yUtilizador1, 10, 10);
//utlizador 2
g.setColor(Color.GREEN);
g.drawString(this.utilizador2, this.xUtilizador2, (this.yUtilizador2 - 2));
g.fillOval(this.xUtilizador2, this.yUtilizador2, 10, 10);
//utlizador 3
g.setColor(Color.BLACK);
g.drawString(this.utilizador3, this.xUtilizador3, (this.yUtilizador3 - 2));
g.fillOval(this.xUtilizador3, this.yUtilizador3, 10, 10);
//utlizador 4
g.setColor(Color.ORANGE);
g.drawString(this.utilizador4, this.xUtilizador4, (this.yUtilizador4 - 2));
g.fillOval(this.xUtilizador4, this.yUtilizador4, 10, 10);
//utlizador 5
g.setColor(Color.MAGENTA);
g.drawString(this.utilizador5, this.xUtilizador5, (this.yUtilizador5 - 2));
g.fillOval(this.xUtilizador5, this.yUtilizador5, 10, 10);
}
//******************************************************************************
public void definePosicoes(String uti, int xUti, int yUti,
String uti1, int xUti1, int yUti1,String uti2, int xUti2, int yUti2
,String uti3, int xUti3, int yUti3,String uti4, int xUti4, int yUti4
,String uti5, int xUti5, int yUti5)
{
setUtilizador(uti);
setxUtilizador(xUti);
setyUtilizador(yUti);
if(xUti1 != 0 && yUti1 != 0) {
setUtilizador1(uti1);
setxUtilizador1(xUti1);
setyUtilizador1(yUti1);
} else {
setUtilizador1(" ");
setxUtilizador1(-30);
setyUtilizador1(-30);
}
if(xUti2 != 0 && yUti2 != 0) {
setUtilizador2(uti2);
setxUtilizador2(xUti2);
setyUtilizador2(yUti2);
} else {
setUtilizador2(" ");
setxUtilizador2(-30);
setyUtilizador2(-30);
}
if(xUti3 != 0 && yUti3 != 0) {
setUtilizador3(uti3);
setxUtilizador3(xUti3);
setyUtilizador3(yUti3);
} else {
setUtilizador3(" ");
setxUtilizador3(-30);
setyUtilizador3(-30);
}
if(xUti4 != 0 && yUti4 != 0) {
setUtilizador4(uti4);
setxUtilizador4(xUti4);
setyUtilizador4(yUti4);
} else {
setUtilizador4(" ");
setxUtilizador4(-30);
setyUtilizador4(-30);
}
if(xUti5 != 0 && yUti5 != 0) {
setUtilizador5(uti5);
setxUtilizador5(xUti5);
setyUtilizador5(yUti5);
} else {
setUtilizador5(" ");
setxUtilizador5(-30);
setyUtilizador5(-30);
}
}
}
Class Main
package testes;
import javax.swing.JFrame;
/**
*
* @author Ang3lo
*/
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws InterruptedException {
JFrame jframe = new JFrame("Mapa da sala");
jframe.setVisible(true);
jframe.setSize(400, 200);
jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
Mapa mapa = new Mapa();
jframe.add(mapa);
mapa.definePosicoes("Estou aqui", 100, 100, "Utilizador1", 300, 300, "Utilizador2", 40,
40, "Utilizador3", 50, 50, "Utilizador4", 60, 60, "Utilizador5", 80, 80);
mapa.desenha();
jframe.pack();
Thread.sleep(5000);
mapa.definePosicoes("Estou aqui", 100, 100, "Utilizador1", 300, 300, "Utilizador2", 400,
400, "Utilizador3", 500, 500, "Utilizador4", 600, 600, "Utilizador5", 800, 800);
Thread.sleep(500);
mapa.desenha();
Thread.sleep(5000);
mapa.definePosicoes("Estou aqui", 100, 100, "Utilizador1", 300, 300, "Utilizador2", 400,
400, "Utilizador3", 500, 500, "Utilizador4", 65, 65, "Utilizador5", 50, 50);
Thread.sleep(500);
mapa.desenha();
}
}
Valeu galera 

