Zum Inhalt springen

paint(Graphics g) und JMenuBar für JFrame


Scratch

Empfohlene Beiträge

Moin,

lass dir Zeit! ;-)

Also, mit super() rufst du innerhalb einer Klasse immer etwas aus der Basisklasse auf, jenachdem wo und in welchem Zusammenhang du es schreibst.

In deinem Fall (paint-Methode überschrieben) würdest du also die Paint-Methode von JFrame aufrufen und danach könntest du weitere Sachen hinzuzeichnen.

Oft sieht man auch, dass innerhalb eines Konstruktors super() aufgerufen wird, einfach um somit den Konstruktor der Basisklasse aufzurufen.

Das mit dem JPanel war nur so ne Idee. Das Panel kannst Du auf das ContentPane des Frames klatschen und kannst dann die Paint-Methode des Panels überschreiben, wodurch halt die Paint-Methode vom Frame nicht direkt verändert wird und der MenuBar erhalten bleibt.

Gruß, Peter

(Der nie weiß ob er überhaupt was richtiges erzält ^_^)

Link zu diesem Kommentar
Auf anderen Seiten teilen

also ich hab jetzt einfach ein JPanel angelegt und übergebe dem die sachen die es malen soll ;-)

ich hab eigentlich nur noch Probleme mit dem anpassen der Fenstergröße des Frames .... die Funktion

Image.getWidth(this)

und

Image.getHeight(this)

liefern nachdem das Bild mit

map = Toolkit.getDefaultToolkit().getImage(myImage);

geladen wurde beide -1 statt de eigentlich größe, erst beim zweiten Klick auf meinen Button erkennt der die größe des Bildes :-(

Link zu diesem Kommentar
Auf anderen Seiten teilen

Bei Klick auf den Button -->



paintPanel.setBackgroundImage(image);

System.out.println(paintPanel.getPaintAreaWidth()); // Beim ersten mal -1

System.out.println(paintPanel.getPaintAreaHeight()); // Beim ersten mal -1


setSize(paintPanel.getPaintAreaWidth(),paintPanel.getPaintAreaHeight());


// PaintPanel.class

public void setBackgroundImage(String image)

{

	map = Toolkit.getDefaultToolkit().getImage(image);

	repaint();

	mapWidth = map.getWidth(this);

	mapHeight = map.getHeight(this);

}


als Ergebnis wie schon erwähnt

Klick 1: -1 -1

Klick 2: 300 200

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja das Bild kommt.



public int getPaintAreaWidth()

{

	return image.getWidth();

}


das sollte richtig sein. aber ich glaub ich hab was gefunden ... in den google.de Newsgroups !!
Images take some time to load. They load in another thread and the main thread continues. So, when you try to get info. about the image the first time, the image is not ready so you do not get the information. To get around this, you can use a MediaTracker object to track the image and tell you when it is loaded.
Jetzt hab ichs abgeändert zu


	public void setBackgroundImage(String image)

	{

		MediaTracker tracker = new MediaTracker(this);

		map = Toolkit.getDefaultToolkit().getImage(image);

		tracker.addImage(map,0);

		try

		{

			tracker.waitForID(0);

		}

		catch (Exception e){}

		mapWidth = map.getWidth(this);

		mapHeight = map.getHeight(this);

	}

und es geht ... jetzt fehlt nur noch das er das Bild gleich aktualisiert !!!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...