"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني توسيط أحد المكونات داخل جزء محتوى JFrame؟

كيف يمكنني توسيط أحد المكونات داخل جزء محتوى JFrame؟

تم النشر بتاريخ 2024-12-23
تصفح:580

How Do I Center a Component within a JFrame's Content Pane?

كيف يمكنني توسيط مكون بشكل صحيح داخل JFrame؟

عند محاولة رسم مستطيل داخل JFrame، قم بتعيين حجم الإطار، والخاصية القابلة لتغيير الحجم، وخصائص المستطيل قد لا تؤدي الإحداثيات إلى توسيط المستطيل داخل الإطار.

السبب الأساسي لهذا التناقض يكمن في زخارف الإطار، مثل كحدود وشريط عنوان. تشغل هذه الزخارف مساحة داخل الإطار، مما يؤثر على موضع المستطيل.

لضمان التوسيط المناسب، من الضروري الطلاء على منطقة محتوى الإطار بدلاً من الطلاء مباشرة على الإطار. منطقة المحتوى هي في الأساس الجزء الداخلي من الإطار، باستثناء الزخارف.

مثال الكود:

public class CenteredRectangle { public static void main(String[] args) { SwingUtilities.invocLater(new Runnable() { @تجاوز تشغيل الفراغ العام () { يحاول { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } قبض على (ClassNotFoundException | InstantiationException | IllegalAccessException | غير مدعومLookAndFeelException على سبيل المثال) { } // قم بإنشاء JFrame مع جزء المحتوى إطار JFrame = جديد JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().setPreferredSize(new Dimension(800, 400)); frame.pack(); // قم بإنشاء مكون ليتم توسيطه لوحة JPanel = new JPanel(); Panel.setBackground(Color.RED); Panel.setPreferredSize(new Dimension(700, 300)); // أضف المكون إلى جزء المحتوى frame.getContentPane().add(panel); التحقق من صحة ()؛ // ضع الإطار في منتصف الشاشة frame.setLocationRelativeTo(null); frame.setVisible(true); } }); }
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);
            }
        });
    }
}
في هذا المثال، تم تعيين منطقة محتوى JFrame على الحجم المفضل وهو 800x400، بينما تم تعيين المكون المراد توسيطه، JPanel، على الحجم المفضل وهو 700x300. باستخدام طريقة التحقق من الصحة () في جزء المحتوى، يتم حساب الحجم الفعلي للمكون وموضعه وتطبيقهما.

الآن، يجب أن يتم توسيط المكون بشكل صحيح داخل JFrame، أفقيًا وعموديًا.
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3