Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Java: Oman Swing-komponentin kanssa ongelmia

Triton [13.04.2011 23:27:21]

#

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...

Kapteeni [14.04.2011 15:13:18]

#

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.

http://download.oracle.com/javase/tutorial/uiswing/layout/

Triton [14.04.2011 17:15:16]

#

Joo. Homma ratkesi vain asettamalla tuon setPrefferredSize-metodin arvo. Kiitos!

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta