Rumah >Java >javaTutorial >Bagaimana untuk Memusatkan Segiempat tepat dalam Bingkai Java?

Bagaimana untuk Memusatkan Segiempat tepat dalam Bingkai Java?

Barbara Streisand
Barbara Streisandasal
2024-12-07 12:01:13390semak imbas

How to Correctly Center a Rectangle within a Java Frame?

Memusatkan Segiempat tepat di Jawa

Percubaan anda untuk melukis segi empat tepat di Jawa dan memusatkannya dengan dimensi tertentu mungkin menghadapi isu salah jajaran. Ini berlaku disebabkan oleh hiasan bingkai (sempadan dan bar tajuk) yang menceroboh kawasan cat.

Sebaliknya, pembaikan melibatkan pengecatan pada kawasan kandungan bingkai. Ini mengecualikan hiasan bingkai daripada kawasan cat, menghasilkan segi empat tepat berpusat dengan betul.

Berikut ialah coretan kod yang menggambarkan kaedah yang diperbetulkan:

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

Kod ini memberikan contoh cara melukis segi empat tepat berpusat dalam bingkai, dengan mengambil kira hiasan bingkai.

Atas ialah kandungan terperinci Bagaimana untuk Memusatkan Segiempat tepat dalam Bingkai Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn