Zentrieren eines Rechtecks in Java
Beim Versuch, ein Rechteck in Java zu zeichnen und es mit bestimmten Abmessungen zu zentrieren, kann es zu einem Problem mit der Fehlausrichtung kommen. Dies liegt daran, dass die Dekorationen des Rahmens (Rand und Titelleiste) in den Malbereich hineinragen.
Bei der Lösung wird stattdessen auf den Inhaltsbereich des Rahmens gemalt. Dadurch werden die Dekorationen des Rahmens vom Farbbereich ausgeschlossen, was zu einem korrekt zentrierten Rechteck führt.
Hier ist ein Codeausschnitt, der die korrigierte Methode veranschaulicht:
public class CenterOfFrame { public static void main(String[] args) { new CenterOfFrame(); } public CenterOfFrame() { EventQueue.invokeLater(new Runnable() { @Override public void run() { try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) { } new BadFrame().setVisible(true); JFrame goodFrame = new JFrame(); goodFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); goodFrame.setContentPane(new PaintablePane()); goodFrame.pack(); goodFrame.setLocationRelativeTo(null); goodFrame.setVisible(true); } }); } public class BadFrame extends JFrame { public BadFrame() { setSize(800, 400); setDefaultCloseOperation(EXIT_ON_CLOSE); } @Override public void paint(Graphics g) { super.paint(g); paintTest(g, getWidth() - 1, getHeight() - 1); } } public void paintTest(Graphics g, int width, int height) { g.setColor(Color.RED); g.drawLine(0, 0, width, height); g.drawLine(width, 0, 0, height); g.drawRect(50, 50, width - 100, height - 100); } public class PaintablePane extends JPanel { @Override public Dimension getPreferredSize() { return new Dimension(800, 400); } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); paintTest(g, getWidth() - 1, getHeight() - 1); } } }
Dieser Code stellt ein Beispiel für das Zeichnen dar ein Rechteck in der Mitte eines Rahmens, unter Berücksichtigung der Dekorationen des Rahmens.
Das obige ist der detaillierte Inhalt vonWie zentriert man ein Rechteck innerhalb eines Java-Frames richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!