Ein Rechteck zentriert in einem Java-Rahmen positionieren
In Java kann beim Versuch, ein Rechteck innerhalb eines Rahmens zu zeichnen, dessen zentrale Platzierung sichergestellt werden herausfordernd sein. Trotz der Festlegung spezifischer x-, y-, Breiten- und Höhenwerte kann das Rechteck versetzt erscheinen. Um dieses Problem zu lösen, ist es wichtig, die Dekorationselemente des Rahmens zu verstehen.
Das Problem mit Rahmendekorationen
Rahmen enthalten normalerweise Dekorationen wie einen Rand und eine Titelleiste, die nehmen Platz innerhalb der Rahmengrenzen ein. Wenn Sie also direkt auf den Rahmen und nicht auf dessen Inhaltsbereich malen, kann der Eindruck entstehen, dass das Rechteck zu hoch positioniert ist.
Lösung: Auf den Inhaltsbereich des Rahmens malen
Um das Rechteck richtig zu zentrieren, konzentrieren Sie sich darauf, auf den Inhaltsbereich des Rahmens zu malen und dabei die Dekorationen im Wesentlichen auszuschließen. Der Inhaltsbereich ist der vorgesehene Bereich für die Komponentenplatzierung und bietet einen konsistenten und genauen Referenzpunkt für die Positionierung.
Implementierungsbeispiel
Der folgende Code zeigt, wie a richtig positioniert wird rechteckig in der Mitte eines Rahmens, angepasst an Rahmendekorationen:
import javax.swing.*; import java.awt.*; public class CenteredRectangle extends JFrame { public static void main(String[] args) { new CenteredRectangle(); } public CenteredRectangle() { setDefaultCloseOperation(EXIT_ON_CLOSE); // Set the content pane's preferred size setContentPane(new PaintablePanel()); pack(); // Center the frame on the screen setLocationRelativeTo(null); // Make the frame visible setVisible(true); } public class PaintablePanel extends JPanel { @Override public Dimension getPreferredSize() { return new Dimension(800, 400); } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); // Draw the rectangle centered within the content area paintRectangle(g); } private void paintRectangle(Graphics g) { g.setColor(Color.RED); int x = (getWidth() - 700) / 2; int y = (getHeight() - 300) / 2; g.drawRect(x, y, 700, 300); } } }
In diesem Beispiel wird ein neues Panel erstellt und als Inhalt des Rahmens festgelegt Scheibe. Das Panel bietet den speziellen Bereich zum Zeichnen von Komponenten. Die Methode getPreferredSize() stellt sicher, dass das Panel eine bestimmte bevorzugte Größe hat, während die Methode paintComponent() überschrieben wird, um das Zeichenverhalten anzupassen. Die Methode paintRectangle() berechnet dann den richtigen Versatz basierend auf den Abmessungen des Inhaltsbereichs, was zu einem zentrierten Rechteck führt.
Durch die Nutzung des Inhaltsbereichs des Rahmens und die Anpassung an Rahmendekorationen positioniert dieser Ansatz das Rechteck genau an der gewünschten Stelle Standort.
Das obige ist der detaillierte Inhalt vonWie zentriert man ein Rechteck innerhalb eines Java-Rahmens und berücksichtigt dabei Rahmendekorationen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!