Skocz do zawartości
MeHow

[java] Problem Z Grafiką 2d

Rekomendowane odpowiedzi

Otóż mam taki problem. Piszę sobie projekt z javy i nie wiem jak zrobić coś takiego, aby na panelu dzięki wywołaniu metody draw() klasy Graphics umieścił mi jaką przeze mnie zdefiniowaną figurę. Przykładowo chciałbym aby był to krzyżyk, ale nie metodą, że wywołam dwa razy draw, dla różnych linii, lecz wolałbym aby wywołanie draw( new Krzyzyk() ) samo wykonywało mi malunek dzięki wiedzy, która zawarta jest w klasie. Podejrzewam, że trzeba implementować jakiś interfejs, lecz niestety nie wiem jaki :), ponadto nie wiem jakie funkcje należy przeciążyć. Jeśli ktoś mógłby mi pomóc, byłbym bardzo wdzięczny.

 

Pozdrawiam

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Hmmm... A czy moge zrobic tak, zeby panel mial przezroczyste tlo?

Chodzi Ci o metodę paintComponent, bo takiej metody uzywam do malowania. Dokładnie używam

public void paintComponent( Graphics g ) {

a w środku do odmalowania czegoś używam

draw(punkt);

 

 

EDIT!!!!!!!!!!!!!!!!

 

zrobilem sobie taka klase:

 

import javax.swing.*;import java.awt.*;import java.awt.geom.*;import java.util.*;import java.awt.event.*;public class Ble extends JPanel{	public Ble() {		super();		// TODO Auto-generated constructor stub	}	public void paint(Graphics g) {		Graphics2D g2 = (Graphics2D)g;		g2.draw( new Line2D.Double( new Point2D.Double( 5,5 ), new Point2D.Double(40,40 )));	}	/**	 * @param args	 */	public static void main(String[] args) {		// TODO Auto-generated method stub	}}

i gdy chce ja w innym panelu wymalowac poprzez g.draw(to_cos); gdzie g jest typu Graphics, to dostaje komunikat od kompilatora, iż

 

The method draw(Shape) in the type Graphics2D is not applicable for the arguments (Ble)	GlownyPanel.java

 

Co z tym począć? Podejrzewam, że należy zaimplementować interfejs shape, ale co w nim za co odpowiada. Czy mógłbyś mi Pelzaku zdradzić tą słodką tajemnicę :) ?

Edytowane przez MeHow

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

prawdę mówiąc to ja się głowiłem na tym kilka dni... Bo mialęm też rysować jakieś autka na wątkach (prostkąty) jeżdzące po drodze... Szczerze.. to nie lubię javy... Sporo osób się u nas na 5 roku rzuciło na ten język, ostatnio w mojego promotora... siedział zmartwiony koleś który zaczał pisać wrcaby w javie... i poległ...

 

Dlatego ja postanowiłem pisać w C++ bo tam przynajmniej wiem co się dzieje prawie dokładnie :)

 

u Siebie mam coś takeigo.. nie każ mi tego tłumaczyć.. gdyż jak mówię.. 30% czasu z moich laborek poświecałem na rozwiązanie problemu a 70% na rozwiązanie problemów z JAVunią :lol:

 

class Land extends JPanel{private Droga road1=new Droga(24,30,300,0,cross);	// droga pozioma protected  void paintComponent(Graphics g) { 	 	super.paintComponent(g);  //czyszczenie tła		road1.Draw(g);  }
to się najprawdopodobniej wywołuje samo... z menagera obsługi swingów czy czegoś tam...

 

natomiast klasa Droga zawierająca metodę draw rysującą jakieś smiecie....

 

class Droga { public void Draw(Graphics g) { 	g.setColor(Color.gray);		g.fillRect(firstCellX,firstCellY,roadSize*cellCount,roadSize); 	 }

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...