 java - painting Witam, Mam taki problem - chciałbym wykorzystywać wątki do rysowania na utworzonej planszy. Szkielet programu przedstawia się następująco: class A extends Thread { public run() { .. tutaj chciałbym dostać się do g2d klasy B i narysować coś .. } } class B extends JPanel { public paintcomponent(Graphics g) { super.paintComponent(g); Graphics2D g2d = (Graphics2D)g; tutaj wykorzystuję g2d to rysowania } } Byłbym wdzięczny za każdy pomysł w tej sprawie


Odpowiedzi |
adrianpirat 01-02-2010 20:12
| Wątki: 229 Odpowiedzi: 1550 Ottawa |
 w
konstruktorze klasy A robisz referencje do obiektu klasy B tak żeby klasa a miała dostęp do tego obiektu typu B
 |
| Zbieram na kompa!! nr konta 38 1140 2004 0000 3402 3890 1656 lub szukam pracy w okolicach wawy/ minsk maz. |
Seraphim 01-02-2010 20:26
| Wątki: 5 Odpowiedzi: 15 Bielsko-Biała |
 re
Tworząc obiekt klasy B w klasie A będę w każdym wątku tworzył od nowa plansze .. to nie jest ani wydajne ani odpowiednie do tego programu. Przez getGraphics() to nie działa.
 |
| |
rusty 01-02-2010 20:30
| Wątki: 40 Odpowiedzi: 3376 Gdansk |
 ...
wg adrianpirat: nie tworzysz nowego obiektu klasy B w klasie A tylko zachowujesz referencje do istniejacego.
 |
| terrible lie |
Seraphim 01-02-2010 20:40
| Wątki: 5 Odpowiedzi: 15 Bielsko-Biała |
 re
Tak jak już pisałem przy użyciu referencji czyli "B b;", a następnie b.getGraphics gdyż B dziedziczy po JPanel - getGraphics zwraca null.
 |
| |
rusty 01-02-2010 20:51
| Wątki: 40 Odpowiedzi: 3376 Gdansk |
 ...
znam dobrze .net i chcialem przeniesc analogie do javy ale poczytalem o referencjach w javie i wymieklem chyba nie dziwie sie, dlaczego java odchodzi w przeszlosc...
 |
| terrible lie |
adrianpirat 01-02-2010 20:51
| Wątki: 229 Odpowiedzi: 1550 Ottawa |
 .
class A extends Thread { B b; public A(B b) { this.b=b; } public run() { this.b.robcos; } } class B extends JPanel { public paintcomponent(Graphics g) { super.paintComponent(g); Graphics2D g2d = (Graphics2D)g; tutaj wykorzystuję g2d to rysowania } } class C //wywołanie { public C() { B b=new B(); A a=new A(b); a.start(); A a2=new A(b); a2.start(); } }
 |
| Zbieram na kompa!! nr konta 38 1140 2004 0000 3402 3890 1656 lub szukam pracy w okolicach wawy/ minsk maz. |
adrianpirat 01-02-2010 20:58
| Wątki: 229 Odpowiedzi: 1550 Ottawa |
 rusty
czy ja wiem czy java przechodzi do historii?? jesli chodzi o tworzenie aplikacji użytkowych to tak ale cały czas ma potencjał duży jeśli chodzi o tworzenie stron www. jesli chodzi o referencje jest to na początku trudne, ja teraz nie myśle o tym jak pisze programy.
 |
| Zbieram na kompa!! nr konta 38 1140 2004 0000 3402 3890 1656 lub szukam pracy w okolicach wawy/ minsk maz. |
Seraphim 01-02-2010 21:01
| Wątki: 5 Odpowiedzi: 15 Bielsko-Biała |
 re
Spróbuje w ten sposób - dzięki Mam do napisania projekt w .net ale nie widzę tego - wszystko do wyklikania, ale jak się pojawi błąd to szukaj igły w stogu siana Czy ja wiem czy tak odchodzi w przeszłość ...
 |
| |
rusty 01-02-2010 21:16
| Wątki: 40 Odpowiedzi: 3376 Gdansk |
 Seraphim
z tego co czytalem to w momencie gdy robisz: this.b = b; tracisz referencje i robisz kopie obiektu. co by bylo, gdybys w kostruktorze wywolal b.getGraphics? powinienes dostac oryginalne graphics. Inne pytanie to jest takie, czy mozesz zachowac w obiekcie A tak uzyskane graphics na boku: .net to nie tylko "wyklikiwanie" aplikacji, mnostwo rzeczy jest nie do wyklikania i nigdy nie mialem problemow z debugowaniem (pisalem bardzo duza aplikacje typu client-server z uzyciem WCF). adrianpirat: cala technologia ASP.NET jest oparta na platformie .NET i pisanie w niej aplikacji jest prawdziwa przyjemnoscia. mam nadzieje, ze zjawi sie Michoo i to potwierdzi
 |
| terrible lie |
Seraphim 01-02-2010 21:24
| Wątki: 5 Odpowiedzi: 15 Bielsko-Biała |
 rusty
Gdy wywołam b.getGraphics które teoretycznie powinno mi zwrócić Graphics z paintcomponent - zwraca null. Także nie mogę stworzyć kopi B gdyż to jest tylko stworzenie planszy - a za pomocą A chcę umieszczać dowolną ilość obiektów na tejże planszy
 |
| |
adrianpirat 01-02-2010 21:30
| Wątki: 229 Odpowiedzi: 1550 Ottawa |
 .
this.b = b; tu nie traci referencji. Każdy lub to co umie dobrze. ASP.Net próbowałem sie nauczyć, ale wybrałem jave. Wracając do tematu to kod który dostałem nie mam utworzenie obiektu typu A.
 |
| Zbieram na kompa!! nr konta 38 1140 2004 0000 3402 3890 1656 lub szukam pracy w okolicach wawy/ minsk maz. |
Seraphim 01-02-2010 21:53
| Wątki: 5 Odpowiedzi: 15 Bielsko-Biała |
 adrianpirat
Nie ma w tym kodzie utworzenia obiektu typu A czyli bodajże Car gdyż będzie on tworzony do tablicy - na chwilę obecna skupiamy się na zdeklarowaniu obiektu A aby wyświetlał obiekty na planszy utworzonej przez B.
 |
| |
adrianpirat 01-02-2010 21:59
| Wątki: 229 Odpowiedzi: 1550 Ottawa |
 .
class Car extends Thread { EllipseTrace et; public Car(EllipseTrace et) { this.et = et; start(); } @Override public void run() { Graphics g = et.getGraphics(); g.setColor(Color.black); g.fillRect(20,00,130,150); et.repaint(); } } to powyżej narysuje czarny prostką
 |
| Zbieram na kompa!! nr konta 38 1140 2004 0000 3402 3890 1656 lub szukam pracy w okolicach wawy/ minsk maz. |
rusty 01-02-2010 22:01
| Wątki: 40 Odpowiedzi: 3376 Gdansk |
 yup
tez wlasnie pomyslalem o subklasowaniu Thread i w nim zarzaniu grafika
 |
terrible lie >> Powrót na główną stronę boarda << >> Odśwież tę stronę <<
| Aby pisać na boardzie należy najpierw się zalogować | |
|
Mini-Board
 >> Powrót na główną stronę boarda << >> Odśwież tę stronę << 
Wszystkie Wątki
|