Rysowanie i dziedziczenie

0

Witam,

mam coś takiego:
Klasa, która służy do rysowania różnych form(linie, kółka, krzyżyki itd) oraz inna klasa, która tworzy panel do rysowania z tym, że ona sama dziedziczy po Panel() wiec nie mogę odziedziczyć po klasie od rysowania - jak zaimplementować te metody, abym mógł rysować na panelu.

Jeżeli ktoś nie zrozumiał o czym napisałem pokaże to mniej wiecej na kodzie:

class Pan extends Panel
{
	private Font font;
	public void paint(Graphics gdc)
	{
        // tu mogę wywołać funkcje np. drawOval(); itd ale ja chciałbym zaimplementować tutaj klasę poniżej
	}
	
	Pan(){}

}

class DrawMyThings extends GraphicPrimitives {

	public void drawMyLine(Integer x1, Integer y1, Integer x2, Integer y2, Color myColor)
	{ 
        // tutaj mam jakieś funkcje, które powinny narysowac linie
	}
}

więc właściwie potrzebuję wywoałać coś w stylu "gdc.drawMyLine(...)", albo w jakiś sposób narysować linię i dodać ją do gdc.

Proszę o wskazówki.

0

Spróbuj przekazac obiekt Graphics do metod twojej klasy. I uzyc tych metod wewnątrz metody paint panelu.

0

Stwórz w pierwszej klasie klasę wewnętrzną i dziedzicz po klasie, która jest Ci potrzebna. Klasa wewnętrzna ma dostęp zarówno do klasy zewnętrznej jak i do klasy po której dziedziczy. Możesz też mieć tyle klas wewnętrznych ile Ci się podoba. Dziedziczenie klas wewnętrznych, to efektywnie nic innego jak dziedziczenie wielobazowe z C++ (tyle, że jawne). Klasa zewnętrzna ma również dostęp do wszystkich składowych klas wewnętrznych - łącznie z prywatnymi. To działa w obie strony. Klasa wewnętrzna ma w sobie niejawną referencję do klasy zewnętrznej i działa to tak samo jak wskaźnik tablicy klasy wirtualnej z C++.
Tylko klasy wewnętrzne statyczne nie mają tych możliwości i są one dokładnym odpowiednikiem klas zagnieżdżonych z C++.

Oczywiście zawsze możesz użyć tradycyjnej techniki, czyli delegacji.

1 użytkowników online, w tym zalogowanych: 0, gości: 1