[ LightBow @ 31.07.2008. 06:17 ] @
Pozdrav Java forumasima.
Napravio sam klasu BidButton koja nasledjuje JButton. Dodatna metoda je public int getItem().

E sad u glavnoj klasi napravio sam niz BidButtona i svakom dodelio broj (int). Sada sam definisao actionPerformed ovako:
Code:
public void actionPerformed(ActionEvent e) {
        
        int id = e.getSource().getItem();
Medjutim kompajler ne prepoznaje getItem() metodu. Ja sam mislio da getSource() vraca objekat koji je kliknut, a to je u ovom slucaju BidButton?
Probao sam i da kastujem:
Code:
int id = (BidButton)e.getSource().getItem();
Ali dobijam istu gresku.
Zna li neko u cemu je greska?
[ Nikola Poša @ 31.07.2008. 10:22 ] @
Da si taj kod kucao u NetBeans-u bilo bi ti mnogo lakshe, i verovatno bi odma' video da getSource() vraca Object. A taj object ne podrazumeva celu tu klasu koju si ti napravio, vec samo objekat koji je izazvao taj dogadjaj, tako da ne mozhesh preko te metode da pristupish i toj dodatnoj metodi u klasi. Posle te tachke iza getSource(), mogu da idu samo npr. equals(), getClass(), hashCode(), notify(), itd.
Ne znam tachno shta je cilj tog tvog dela koda...
[ hyle @ 31.07.2008. 13:49 ] @
Nisi dobro kastovao, za kompajler veći prioritet ima poziv metode u odnosu na kastovanje.
Code:
int id = (BidButton)e.getSource().getItem();

Kompajler smatra da si hteo da pozoveš sve navedene metode i tek na kraju uradiš kastovanje rezultata u BidButton.
Ispravno kastovanje je ovako:
Code:
int id = ((BidButton)e.getSource()).getItem();

Zagradama možeš obezbediti da se prvo uradi kastovanje u BidButton i tek onda pozoveš metodu.
[ LightBow @ 31.07.2008. 15:51 ] @
Da, to je to. Pretpostavljao sam tako nesto posto kad sam stavio:
Code:
BidButton bb = (BidButton)e.getSource();
        int id = bb.getItem();
onda radi.
Hvala.