[ boban__2006 @ 10.09.2008. 23:15 ] @
interesuje me, na koji nacin bih mogao da u java aplet, ubacim neku listu koja podrzava slike (uz klasican text). da li bi to trebalo da ide preko neke .ocx kontrole ili nekako drugacije? unapred zahvalan na trudu i razumevanju mog neznanja...
[ bgd2500 @ 14.09.2008. 18:40 ] @
Ako pod listom mislis na nesto tipa combo box i ako koristis awt onda nema druge nego da napravis svoju kontrolu.
Nasledis Component ili Canvas pa implementiras paint metod, dodas event handling i eto.
[ boban__2006 @ 11.10.2008. 18:12 ] @
jel bi mogao mozda da mi pojasnis sta konkretno radi klasa Canvas? i da li imas mozda neki primer dodavanja eventa? hvala unapred....
[ gajo2 @ 14.10.2008. 14:35 ] @
Recimo da zelis da dodas samo slike u JList, onda bi to radio na sledeci nacin:
1) Napravis novu klasu koja implementira ListCellRenderer
2) Unutar komponente napravis jednu finalnu instancu labele
Code:
private final JLabel imgLabel = new JLabel();

3) Pretpostavimo da si u ovu listu ubacivao objekte tipa ImageIcon. Onda bi implementirao metodu getListCellRendererComponent() ovako:
Code:
if (value instanceof ImageIcon {
   imgLabel.setIcon((ImageIcon)value);
}
return imgLabel;

4) Sada podesis da tvoja lista koristi ovaj renderer:
Code:
tabsList.setCellRenderer(new MojSuperRenderer());


To je sve. Ne zaboravi samo da u listu ubacujes elemente tipa ImageIcon. Mozes ti da ubacujes sta god hoces, samo onda renderer namesti tako da on handluje te objekte kako treba.

Odavde mozes ici i ka kompleksnijim resenjima. Npr. lako napravis jedan JPanel koji u sebi ima razne dugmice, polja itd. pa napravis renderer za njega, ubacis ga u listu, i dobices listu istovetnih panela. Sve zavisi samo sta vraca kao rezultat metoda getListCellRendererComponent() (u tvom slucaju vraca labelu koja sadrzi u sebi sliku).
[ boban__2006 @ 14.10.2008. 23:39 ] @
hvala puno... sve sam uspeo da uradim. jedino mi nije jasno na koji nacin ja mogu da dodam tu labelu sa ikonicom u JList. probao sam ovako

ImageIcon icon = new ImageIcon("images/middle.gif");
listaSlike.add(icon);

ali kaze mi da lista ne moze da prihvati kao ulazni parametar ImageIcon.

sve prethodne korake sam uradio kao sto mi je receno.. pozzz
[ gajo2 @ 15.10.2008. 07:00 ] @
Svaka vidljiva komponenta kao sto su liste, tabele, dugmadi itd. imaju vidljivi deo i model. Vidljivi deo je npr. ovaj renderer, ili kada podesis tip kursora, boju pozadine itd. a model je ono sto sadrzi podatke. Take npr. JList ima ListModel, JTable ima TableModel... Dakle, ne dodajes slike u listu, vec u njen model.

E sad, da bi jos dodatno zakomplikovali stvar, ListModel je samo interfejs koji cak ni nema neke korisne metode tipa add(). Ono sto ti treba da uradis je da napravis svoj model (tako sto nasledis ListModel) koji u sebi ima neki array koji ce sadrzati komponente, i napravis da ti lista koristi taj model (myList.setModel(new MojModel())). Medjutim, to bi uradio samo za neke komplikovanije situacije, a ako zelis samo da dodajes slike onda koristi DefaultListModel klasu, koja vec ima add() metodu. Dakle:
Code:
// iniciranje
myList.setModel(new DefaultListModel());
...
// dodavanje elementa
DefaultListModel model = (DefaultListModel)myList.getModel();
model.addElement( myIcon );


E da: RTFM
[ boban__2006 @ 15.10.2008. 11:08 ] @
hvala puno na pomoci!