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
DDDOriginal
2024-12-04 09:29:11723Durchsuche

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

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);

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!

Stellungnahme:
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