Heim > Java > javaLernprogramm > Wie kann man einen in der Größe veränderbaren JFrame genau zentrieren und Kollisionen mit seinen Kanten erkennen?

Wie kann man einen in der Größe veränderbaren JFrame genau zentrieren und Kollisionen mit seinen Kanten erkennen?

DDD
Freigeben: 2024-12-04 09:29:11
Original
717 Leute haben es durchsucht

How to Accurately Center a Resizable JFrame and Detect Collisions with its Edges?

Auflösen der genauen Mittenpositionierung in einem skalierbaren JFrame

Ihre Anfrage stellt zwei Herausforderungen dar: präzise Kollisionserkennung mit den Kanten des Rahmens und Bestimmung der genauen Mitte, unabhängig von der Bildschirmgröße.

Kollisionserkennung Korrektur

Der beobachtete 10-Pixel-Versatz bei der Kollisionserkennung ist wahrscheinlich auf ein Missverständnis der Rahmenabmessungen zurückzuführen. Ein JFrame umfasst einen Rahmen, JRootPane und andere Komponenten rund um den eigentlichen Inhaltsbereich. Daher müssen Sie Ihre Berechnungen anpassen, um die Breite und Höhe des Randes zu berücksichtigen.

Um den genauen überstreichbaren Bereich zu erhalten, verwenden Sie die Formel:

Width - border.width
Height - border.height
Nach dem Login kopieren

Genaue Bestimmung der Bildschirmmitte

Um die genaue Mitte des Bildschirms zu finden, berücksichtigen Sie Folgendes Folgendes:

  • Perspektive des Rahmens: Die Mitte liegt bei (100x100), basierend auf den Abmessungen des Rahmens.
  • Perspektive des Inhaltsbereichs: Die Die Mitte liegt bei (92 x 81), basierend auf dem Inhaltsbereich Abmessungen.

Die Wahl des zu verwendenden Wertes hängt von Ihrem Verwendungszweck ab:

  • Für die Positionierung des Rahmens verwenden Sie den Mittelpunkt des Rahmens.
  • Für Beim Malen verwenden Sie den Mittelpunkt des Inhaltsbereichs.

Methode zum Zentrieren des Rahmen

Um den Rahmen einfach auf dem Bildschirm zu zentrieren, rufen Sie Window#setLocationRelativeTo(null) auf.

Alternativ können Sie die folgende Formel verwenden:

JFrame frame = ...;
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
int x = (screenSize.width - frame.getWidth()) / 2;
int y = (screenSize.height - frame.getHeight()) / 2;
frame.setLocation(x, y);
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann man einen in der Größe veränderbaren JFrame genau zentrieren und Kollisionen mit seinen Kanten erkennen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage