Olen yrittänyt luoda uutta Swing-komponenttiä periyttämällä sen JComponent-luokasta. Nyt kun yritän lisätä sitä JPaneelin, niin kaikki ei toimi oikein. Ilmeisestikin JPanelin LayoutManager ei toimi oikein (esim. oletus LayoutManageria käyttäessä komponentti ei ilmesty ruudulle, vaikka olen sen add
-metodilla lisännyt). Koska valmiiden komponenttien kohdalla kaikki toimii oikein, niin uskoisin, että vika on nimenomaan tässä omassa komponentissani. Koodia minulla ei valitettavasti ole juuri nyt saatavilla, mutta sen verran voin sanoa, että olen syrjäyttänyt ainoastaan yhden JComponent-luokan metodin ja se on paintComponent
, jossa olen toteuttanut oman komponenttini piirron. Tässä lähinnä mietin sitä, että täysiköhän mun syrjäyttää joitakin muitakin metodeja, joita sitten taas tuo JPanelin LayoutManager käyttää komponenttien sioitteluun JPanelissa...
Et sanonut, asetatko komponentillesi halutun koon setPreferredSize-metodilla tai jollain muulla tavalla. Villinä arvauksena voin siis heittää, että sen kooksi tulee nolla kertaa nolla, ja se ei sen takia näy.
Tässä on aika minimalistinen esimerkki, jossa peritään JComponent-luokasta oma komponentti. Voit kokeilla muokata sitä oman koodisi kaltaiseksi ja ehkä havaita, missä vaiheessa se lakkaa toimimasta halutulla tavalla. Huomaa, että esimerkki sisältää ym. setPreferredSize-metodin kutsun komponenttiluokan konstruktorissa.
http://www.leepoint.net/notes-java/examples/graphics/face/face2app.html
Tässä on puolestaan Java-tutoriaalin layoutteja käsittelevä osa, jos haluat lukea asiasta lisää. Lyhyesti sanottuna: Eri layoutmanagerit käsittelevät vinkit komponenttien koosta eri tavoilla.
Joo. Homma ratkesi vain asettamalla tuon setPrefferredSize-metodin arvo. Kiitos!
Aihe on jo aika vanha, joten et voi enää vastata siihen.