[JAVA] Variable

Programovacie jazyky, rady, poradňa...
TGiJack
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 419
Registrovaný: 30 nov 2006, 19:37
Bydlisko: NO
Kontaktovať používateľa:

[JAVA] Variable

Príspevok od používateľa TGiJack »

ahojte neviete ako sa da z retazca String spravit premenná ??

potrebujem to do cyklu ktorý mi vytvara automatický Labely aby som ich vedel identifikovat :( alebo nevedeli by ste mi poradit ako by som ich od seba odlišoval ??

Kód: Vybrať všetko

    private void polia() {
        for(int z = 0; z < atRozmerPolaZvisle; z++) {
            for(int v = 0; v < atRozmerPolaVodorovne; v++) {
                policko = new javax.swing.JLabel();
                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) {
                        polickoMouseClicked(evt);
                    }
                });
            }
        }
    }
pheo
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 212
Registrovaný: 20 sep 2005, 16:53
Bydlisko: moje hniezdo
Kontaktovať používateľa:

Príspevok od používateľa pheo »

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



                    }
                });
            }
        }
    }

TGiJack
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 419
Registrovaný: 30 nov 2006, 19:37
Bydlisko: NO
Kontaktovať používateľa:

Príspevok od používateľa TGiJack »

paraaadička :) diik fakt si mi pomohol ..este som to sice neskusil ale vyzerato presne tak ako som si to predstavoval .. ja som to skušal robit cez to name ale nejako som to nevedel rozhýbat .. ktore by si mi odporučil ?? čo bude efektivnejšie ?? cez to name ? alebo tým druhym spôsobom ?

//autoeditácia príspevku ( 20 Nov 2009, 1:32 )
PS: mam nejake otazky na ten 2 kod bez toho name :

co mam spravit stýmto ? akosi nechapen ten kod nefunguje kým si ich nepremenujem ??

Kód: Vybrať všetko

    private int xPos; //bacha Jlabel uz ma x preto musis pomenovat inak 
    private int yPos; //bacha Jlabel uz ma y
a ešte sa mi stratila metoda

Kód: Vybrať všetko

polickoMouseClicked(evt);
ktora sa spusta po kliknuty na dany label :(

ako to tam dopišme

Kód: Vybrať všetko

                policko.addMouseListener(new java.awt.event.MouseAdapter() {
                    public void mouseClicked(java.awt.event.MouseEvent evt) {
                        XYLabel labela = (XYLabel)evt.getComponent();
                        labela.getX();
                        labela.getY();
                    }
                });
pheo
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 212
Registrovaný: 20 sep 2005, 16:53
Bydlisko: moje hniezdo
Kontaktovať používateľa:

Príspevok od používateľa pheo »

určite je výhodnejšie použiť dedenie pred mapovaním (rýchlejšie).

k, PS:
problem, je keby ti mal :

Kód: Vybrať všetko

class XYLabel extends JLabel{
    private int x;
    private int y;

   //zvysny balast (konstuktory getre setre) pochopitelne tu neanpísem
}
Problem je v som že už samotné JLabel už x , y v sebe má, a tym že ich tu prepíšeš + doplníš setre by mohol nastať drobny problem. Do x,y si totiž label uklada svoju poziciu v okne, takze by sa mohlo stat ze namiesto x= 2 y = 2 by si tam mal x = 220 y = 110 (poziciu v okne nastavuje swing interne pri vytváraní gui) preto je rozumné tie premenné nazvať inak.


Tu metodu

Kód: Vybrať všetko

polickoMouseClicked(evt);
samozrejme môžeš použiť. aj ju použi, ja som ju vynechal z toho dôvodu ze som ti to chcel demonstrovať, a nechcelo sa my moc písať ;). Prakticky použiješ rovnaký kód ako som ti napísal v mouseClicked metode len to smaris do polickoMouseClicked.
TGiJack
Medium Star
Medium Star
Používateľov profilový obrázok
Príspevky: 419
Registrovaný: 30 nov 2006, 19:37
Bydlisko: NO
Kontaktovať používateľa:

Príspevok od používateľa TGiJack »

Dik za to vysvetlenie :) len som teraz nevedel že čo si tym myslim ....

už som spravil aj to click ..len som teraz nevedel vlastne oko sa volaju tie jednotlive labely a ako ich ten klik identifikuje :) ale už je to všetko porobene preesne ako som chcel :) velka vdak ti ešte raz :wink:

//autoeditácia príspevku ( 20 Nov 2009, 17:54 )
NO mam teraz ešte jednu otazočku k tej triede XYLABEL .. ako sa daju upravovat tie labely vygenerovane aj v kode ???? ten XYLabel sa sprava ako nejake pole alebo ako to mam chapat?? lebo editovat ho momocou mouseclik tak to ide v pohode ale nevei ako by som modifikoval po jednom kliknuti aj label napriklad o jedno alebo odva nadol, nahor ... ako v kode zavolam napriklad 4vygenerovaný label z 5tych ...dufam ze ma chapete ako to myslim :(
Napísať odpoveď