ahoj,
myslim ze nieco take ako $$nazov ako v php java nema. Java je typovo statický jazyk, teda podobne srandy neumožňuje, na to využiva mapovanie. (Rozhranie java.util.Map a jeho implementacie, napr TreeMap alebo HashMap )
Podla mna vsak mapy nepotrebujes. Tu donotu ktore bolo policko sticknute ziskas z:
Kód: Vybrať všetko
JLabel label;
for (int i = 0; i < 10; i++) {
label = new JLabel("i:" + i);
label.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
//vytiahne komponentu ktora bola kliknuta
e.getComponent().getName();
}
});
}
Bol by tu však maly problem že by policko muselo mat name, co asi nechces. Tu sa krasne hodi OOP, proste zdedis label
Kód: Vybrať všetko
class XYLabel extends JLabel{
private int xPos; //bacha Jlabel uz ma x preto musis pomenovat inak
private int yPos; //bacha Jlabel uz ma y
public XYLabel(int xPos, int yPos) {
super(); //vytvori prazny label
this.xPos = xPos;
this.yPos = yPos;
}
public int getxPos() {
return xPos;
}
public void setxPos(int xPos) {
this.xPos = xPos;
}
public int getyPos() {
return yPos;
}
public void setyPos(int yPos) {
this.yPos = yPos;
}
}
A budes pouzivat tuto komponentu ako keby sa nic nestalo:
Kód: Vybrať všetko
private void polia() {
for(int z = 0; z < atRozmerPolaZvisle; z++) {
for(int v = 0; v < atRozmerPolaVodorovne; v++) {
policko = new XYLabel(x,y);
policko.setBackground(new java.awt.Color(204, 204, 255));
policko.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED));
minovaSiet.add(policko);
policko.addMouseListener(new java.awt.event.MouseAdapter() {
public void mouseClicked(java.awt.event.MouseEvent evt) {
XYLabel labela = (XYLabel)evt.getComponent();
labela.getX(); labela.getY();
}
});
}
}
}