منتدى مصر التقني
هل تريد التفاعل مع هذه المساهمة؟ كل ما عليك هو إنشاء حساب جديد ببضع خطوات أو تسجيل الدخول للمتابعة.

الطرق المختلفة لتوسيط النافذة JFrame على الشاشة

اذهب الى الأسفل

الطرق المختلفة لتوسيط النافذة JFrame على الشاشة  Empty الطرق المختلفة لتوسيط النافذة JFrame على الشاشة

مُساهمة من طرف 1zaza الجمعة يناير 10, 2020 3:38 pm

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

الطريقة الأولى هي استخدام فئة java.awt.Toolkit للحصول على حجم الشاشة. 

تقوم طريقة getScreenSize () بإرجاع java.awt.Dimension من حيث يمكننا الحصول على عرض وارتفاع الشاشة لدى المستخدم . بوجود هذه القيم في ، يمكننا حساب الموضع العلوي الأيسر للنافذة JFrame وبالتالى يمكنك توسيطها وذلك باستخدام الكود أدناه

الكود:
import javax.swing.*;
import java.awt.*;

public class CenteredJFrame extends JFrame {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                // الحصول على حجم الشاشة للمستخدم
                Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

                CenteredJFrame frame = new CenteredJFrame();
                frame.setTitle("Centered JFrame");
                frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
                frame.setSize(250, 250);

                //يحسب المكان الذي يوجد فيه مركز JFrame
                int x = (screenSize.width - frame.getWidth()) / 2;           
                int y = (screenSize.height - frame.getHeight()) / 2;
                frame.setLocation(x, y);
                frame.setVisible(true);
            }
        });
    }
}

الطريقة الثانية وهى الأفضل والأكثر بساطة هو استخدام الأسلوب setLocationRelativeTo (Component). وفقًا لـ Javadoc من هذه الطريقة: إذا كان المكون فارغًا ، أو كان تكوين الرسومات المرتبط بهذا المكون فارغًا ، فسيتم وضع النافذة في وسط الشاشة.

إذا قمت بالاتصال بأسلوب JFrame.pack (). يجب استدعاء الأسلوب قبل الأسلوب setLocationRelativeTo ().

حتى نتمكن من إعادة كتابة الكود أعلاه مثل هذه:

الكود:
import javax.swing.*;

public class CenteredJFrameSecond {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                CenteredJFrame frame = new CenteredJFrame();
                frame.setTitle("Centered JFrame");
                frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
                frame.setSize(250, 250);

                // Place the window in the center of the screen.
                frame.setLocationRelativeTo(null);
                frame.setVisible(true);
            }
        });
    }
}
1zaza
1zaza
...
...

تاريخ التسجيل : 18/11/2018
المساهمات : 39
النقاط : 66
التقيم : 3
الدولة : مصر
الجنس : ذكر

الرجوع الى أعلى الصفحة اذهب الى الأسفل

الرجوع الى أعلى الصفحة

ََ

مواضيع ذات صلة


 
صلاحيات هذا المنتدى:
لاتستطيع الرد على المواضيع في هذا المنتدى