Eli haluaisin piirtää toisesta luokasta pääluokkaan, miten tämä onnistuu?
edit: Siis javalla, javalla. :)
No välität sille toiselle luokalle pääluokan piirtopinnan tai koko pääluokan.
Tai teet pää luokkaan staattisen metodin, joka lisää piirto olio listaan uusia piirto olioita, jotka sitten piirretään paint metodissa. Suositeltavampaa on kuitenkin toimia kuten maka78 neuvoi.
Ylläoleviin vastauksiin hieman lisäystä/tarkennusta:
Eli kerro pääluokan paint metodille mitä kaikkea sen haluat piirtävän. Oletetaan että käytät swingiä ja haluat pääluokan piirtävän viivan, kuitenkin haluat jossain muussa luokassa päättää millainen tuo viiva on.
Swingissä/AWT:ssä piirtäminen tapahtuu ylikirjoittamalla java.awt.Component:issa alunperin määritelty
public void paint(Graphics g)
metodi. Jotta piirtäminen olisi mahdollisimman tehokasta, tämän metodin tulisi tehdä kaikki piirtäminen. Sieltä toisesta luokasta pitäisi siis kertoa pääluokalle mitä sen paint metodin pitäisi piirtää. Esimerkiksi:
class ToinenLuokka{ public ToinenLuokka(Paaluokka parent){ parent.requestLineDraw(new Point(0,0), new Point(10,10)); } class Paaluokka ...{ private Point p1 = null; private Point p2 = null; ... public void requestLineDraw(Point start, Point end){ this.p1 = start; this.p2 = end; } public void paint(Graphics g){ ... g.drawLine(p1.x, p1.y, p2.x, p2.y); ... } ... }
Esimerkissä on paljon ... kohtia jotka sinun täytyy itse täyttää siten että applikaatiosi toimii. Ideana oli esitellä vain se piirtomekanismi. Tarkempaa infoa piirtämisestä saat osoitteesta:
http://java.sun.com/products/jfc/tsc/articles/
Toivottavasti auttaa. =)
J
Aihe on jo aika vanha, joten et voi enää vastata siihen.