Wenn Sie versuchen, ein Rechteck innerhalb eines JFrames zu zeichnen, legen Sie die Rahmengröße, die Größenänderungseigenschaft und die Rechtecke fest Koordinaten führen möglicherweise nicht dazu, dass das Rechteck innerhalb des Rahmens zentriert ist.
Der Grund für diese Diskrepanz liegt in den Dekorationen des Rahmens, wie z Rahmen und Titelleiste. Diese Dekorationen nehmen Platz innerhalb des Rahmens ein und wirken sich auf die Positionierung des Rechtecks aus.
Um eine ordnungsgemäße Zentrierung sicherzustellen, ist es wichtig, auf den Inhaltsbereich des Rahmens zu malen und nicht direkt auf den Rahmen. Der Inhaltsbereich ist im Wesentlichen der innere Teil des Rahmens, mit Ausnahme der Dekorationen.
Beispielcode:
public class CenteredRectangle { public static void main(String[] args) { SwingUtilities.invokeLater(new Runnable() { @Override public void run() { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { } // Create a JFrame with a content pane JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().setPreferredSize(new Dimension(800, 400)); frame.pack(); // Create a component to be centered JPanel panel = new JPanel(); panel.setBackground(Color.RED); panel.setPreferredSize(new Dimension(700, 300)); // Add the component to the content pane frame.getContentPane().add(panel); frame.validate(); // Position the frame at the center of the screen frame.setLocationRelativeTo(null); frame.setVisible(true); } }); } }
In diesem Beispiel ist der Inhaltsbereich des JFrame auf eine bevorzugte Größe von 800 x 400 eingestellt, während die zu zentrierende Komponente, ein JPanel, auf eine bevorzugte Größe von 700 x 300 eingestellt ist. Durch die Verwendung der Methode „validate()“ im Inhaltsbereich werden die tatsächliche Größe und Position der Komponente berechnet und angewendet.
Jetzt sollte die Komponente korrekt im JFrame zentriert sein, sowohl horizontal als auch vertikal.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3