عند محاولة رسم مستطيل داخل 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