Java Swing - الكلاس JColorChooser

Java Swing - الكلاس JColorChooser

الكلاس JColorChooser يستخدم للحصول على Panel جاهزة و مخصصة لإختيار الألوان.
في العادة يتم إظهار Panel الألوان في JDialog عند النقر على زر مخصص لإختيار الألوان.

الـ Panel الذي يحتوي على Panel الألوان يسمى (Color Chooser Dialog).


بنا Swing - الكلاس JColorChooser

public class JColorChooser
extends JComponent
implements Accessible
	

كونستركتورات الكلاس JColorChooser

الجدول التالي يحتوي أهم الكونستركتورات الموجودة في الكلاس JColorChooser .

الكونستركتور مع تعريفه
public JColorChooser() ينشئ كائن من الكلاس JColorChooser يمثل Panel مخصصة لإختيار الألوان.
هنا يكون اللون الأبيض مختار بشكل إفتراضي.
public JColorChooser(Color initialColor) ينشئ كائن من الكلاس JColorChooser يمثل Panel مخصصة لإختيار الألوان مع تحديد اللون الذي يكون مختاراً بشكل إفتراض.
مكان الباراميتر initialColor نضع كائن من الكلاس Color يمثل اللون الذي سيكون مختاراً بشكل إفتراضي.

دوال الكلاس JColorChooser

الجدول التالي يحتوي على أهم الدوال الموجودة في الكلاس JColorChooser .

الدالة مع تعريفها
public Color getColor() ترجع اللون المختار في كائن الـ JColorChooser الذي قام باستدعائها ككائن من الكلاس Color.
public void setColor(Color color) تستخدم لتحديد اللون الحالي في كائن الـ JColorChooser الذي باستدعائها.
مكان البارميتر color نضع كائن من الكلاس Color يمثل اللون الذي سيتم إختياره.
public void setColor(int red, int green, int blue) تستخدم لتحديد اللون الحالي في كائن الـ JColorChooser الذي قام باستدعائها.

  • مكان الباراميتر red نضع رقم بين 0 و 255 يمثل درجة اللون الأحمر.

  • مكان الباراميتر green نضع رقم بين 0 و 255 يمثل درجة اللون الأخضر.

  • مكان الباراميتر blue نضع رقم بين 0 و 255 يمثل درجة اللون الأزرق.


ترمي الإستثناء IllegalArgumentException في حال تم تمرير قيمة أصغر من 0 أو أكبر من 255 مكان أي باراميتر موجود فيها.
public static Color showDialog(Component component, String title, Color initialColor) تظهر Dialog يحتوي Panel جاهزة و مخصصة لإختيار الألوان, بالإضافة إلى ثلاث أزرار Ok, Cancel و Reset.
ترجع درجة اللون المختار مكان إستدعاءها إذا قام المستخدم بالنقر على الزر Ok.
و ترجع القيمة null في حال نقر على زر الخروج أو على الزر Cancel.

  • مكان الباراميتر component نضع الـ Frame التي نريده أن يظهر بداخلها. أو نضع null لجعله يظهر في وسط شاشة المستخدم.

  • مكان الباراميتر title نضع نص يمثل عنوان الـ Dialog الذي سيظهر.

  • مكان الباراميتر initialColor نضع كائن من الكلاس Color يمثل اللون الذي سيكون مختاراً بشكل إفتراضي.


ملاحظة: في حال قام المستخدم بالنقر على Ok أو Cancel فإنه يتم إخفاء الـ Dialog و مسحه من الذاكرة.
و في حال قام بالنقر على Reset فإنه يتم إختيار اللون الذي كان مختاراً عندما تم إظهار الـ Dialog.
public static JDialog createDialog(
Component component,
String title,
boolean modal,
JColorChooser chooserPane,
ActionListener okListener,
ActionListener cancelListener)
ترجع Dialog جديد يحتوي Panel جاهزة و مخصصة لإختيار الألوان, بالإضافة إلى ثلاث أزرار Ok, Cancel و Reset.

  • مكان الباراميتر component نضع الـ Frame التي نريده أن يظهر بداخلها. أو نضع null لجعله يظهر في وسط شاشة المستخدم.

  • مكان الباراميتر title نضع نص يمثل عنوان الـ Dialog الذي سيظهر.

  • مكان الباراميتر modal نضع false في حال أردنا جعل المستخدم قادر على التعامل مع الـ Frame و الـ Dialog في نفس الوقت.
    &nbsp &nbsp و نضع true لجعله قادر على التعامل مع الـ Dialog فقط عندما يكون ظاهراً.

  • مكان الباراميتر chooserPane نضع كائن من الكلاس JColorChooser.

  • مكان الباراميتر okListener نضع كائن من الكلاس ActionListener يمثل ما سيحدث عند النقر على الزر Ok.

  • مكان الباراميتر cancelListener نضع كائن من الكلاس ActionListener يمثل ما سيحدث عند النقر على الزر Cancel.


ملاحظة: في حال قام المستخدم بالنقر على Ok أو Cancel فإنه يتم إخفاء الـ Dialog لكن لا يتم مسحه من الذاكرة.
و في حال قام بالنقر على Reset فإنه يتم إختيار اللون الذي كان مختاراً عندما تم إظهار الـ Dialog.

  طريقة وضع اللون الذي إختاره المستخدم كخلفية للـ Frame

المثال التالي يعلمك طريقة إظهار Color Chooser Dialog عند النقر على زر معين لإختيار الألوان.
اللون الذي يقوم المستخدم بإختياره سيتم وضعه كخلفية للـ Frame عند النقر على الزر Ok.
في كل مرة يقوم فيها المستخدم بإظهار الـ Color Chooser Dialog سيوضع لون خلفية الـ Frame كاللون الإفتراضي المختار فيه.


مثال

Main.java
                    import javax.swing.JFrame;
                    import javax.swing.JButton;
                    import java.awt.event.ActionEvent;
                    import java.awt.event.ActionListener;
                    import java.awt.Color;
                    import javax.swing.JColorChooser;

                    public class Main {

                    public static void main(String[] args) {

                    JFrame frame = new JFrame("JColorChooser demo");          // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من الكلاس
                    frame.setSize(400, 200);                                  // هنا قمنا بتحديد حجم النافذة. عرضها 400 و طولها 200
                    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     // هنا جعلنا زر الخروج من النافذة يغلق البرنامج
                    frame.setLayout(null);                                    // في النافذة بنفسنا Buttons لذلك سنقوم بتحديد مكان الـ Layout Manager أي لم نستخدم أي null هنا وضعنا

                    // frame و تحديد موقعه و حجمه بداخل الـ Button هنا قمنا بتعريف
                    JButton button = new JButton("Change background color");
                    button.setBounds(90, 70, 200, 30);

                    // frame في الـ button هنا قمنا بوضع الـ
                    frame.add(button);

                    // مرئية frame هنا جعلنا الـ
                    frame.setVisible(true);


                    // button هنا قمنا بوضع الأوامر التي نريد تنفيذها عند النقر على الـ
                    button.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {

                    // frame فوق الـ Color Chooser Dialog سيتم إظهار الـ
                    // كلون إفتراضي له frame سيتم وضع لون خلفية الـ
                    // c في الكائن null بعد أن يتم إغلاقه سيتم تخزين اللون الذي إختاره المستخدم أو القيمة
                    Color c = JColorChooser.showDialog(frame, "Color Picker", frame.getContentPane().getBackground());

                    // frame سيتم وضع اللون الذي إختاره كخلفة للـ ok في حال قام المستخدم بالنقر على الزر
                    if(c != null)
                    frame.getContentPane().setBackground(c);

                    }
                    });


                    }

                    }
                  

ستظهر لك النافذة التالية عند التشغيل.

أنقر على الزر Change background color لإظهار الـ Color Chooser Dialog.

طريقة وضع اللون الذي إختاره المستخدم كخلفية للـ frame في جافا

Java Swing طريقة تعديل شكل الـ JColorChooser

المثال التالي يعلمك طريقة إنشاء الـ Color Chooser Dialog مرة واحدة و إظهاره فقط عند النقر على زر معين لإختيار الألوان.
بالإضافة إلى تغيير محتوى الـ Preview إلى فقط نص.
اللون الذي يقوم المستخدم بإختياره سيتم وضعه كخلفية للـ Frame عند النقر على الزر Ok.
في كل مرة يقوم فيها المستخدم بإظهار الـ Color Chooser Dialog سيوضع لون خلفية الـ Frame كاللون الإفتراضي المختار فيه.


مثال

Main.java
                    import javax.swing.JFrame;
                    import javax.swing.JButton;
                    import java.awt.event.ActionEvent;
                    import java.awt.event.ActionListener;
                    import javax.swing.JColorChooser;
                    import javax.swing.JLabel;
                    import java.awt.Font;
                    import javax.swing.JDialog;

                    public class Main {

                    public static void main(String[] args) {

                    JFrame frame = new JFrame("JColorChooser demo");          // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من الكلاس
                    frame.setSize(400, 200);                                  // هنا قمنا بتحديد حجم النافذة. عرضها 400 و طولها 200
                    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     // هنا جعلنا زر الخروج من النافذة يغلق البرنامج
                    frame.setLayout(null);                                    // في النافذة بنفسنا Buttons لذلك سنقوم بتحديد مكان الـ Layout Manager أي لم نستخدم أي null هنا وضعنا

                    // frame و تحديد موقعه و حجمه بداخل الـ Button هنا قمنا بتعريف
                    JButton button = new JButton("Change background color");
                    button.setBounds(90, 70, 200, 30);

                    // frame في الـ button هنا قمنا بوضع الـ
                    frame.add(button);

                    // لإختيار الألوان مع تخصيص محتواها Panel و الذي يمثل JColorChooser هنا قمنا بتعريف كائن من الكلاس
                    JColorChooser colorChooser = new JColorChooser();

                    // هنا قمنا بتحديد اللون الإفتراضي الذي سيكون مختاراً فيه
                    colorChooser.setColor(0, 51, 255);

                    // مع تحديد خصائصه colorChooser هنا قمنا بتعريف الذي سنضعه بداخل الـ
                    JLabel previewLabel = new JLabel("Selected Color");
                    previewLabel.setFont(new Font("Serif", Font.BOLD, 34));
                    previewLabel.setSize(previewLabel.getPreferredSize());

                    // colorChooser الموجودة في الـ Preview الـ Panel بداخل previewLabel هنا قمنا بوضع الـ
                    colorChooser.setPreviewPanel(previewLabel);

                    // colorChooser الموجود في الـ Ok و الذي سنضع فيه ما سيحدث عند النقر على الزر ActionListener هنا قمنا بتعريف كائن من الكلاس
                    ActionListener okActionListener = new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent actionEvent) {
                    // فقط Frame سيتم وضع اللون المختار كخلفية للـ
                    frame.getContentPane().setBackground(colorChooser.getColor());
                    }
                    };

                    // colorChooser الموجود في الـ Cancel و الذي سنضع فيه ما سيحدث عند النقر على الزر ActionListener هنا قمنا بتعريف كائن من الكلاس
                    ActionListener cancelActionListener = new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent actionEvent) {
                    // هنا يمكنك وضع أي أوامر تريد
                    }
                    };

                    // كمحتواه الوحيد colorChooser و سيتم وضع الـ dialog هنا سيتم إنشاء الـ
                    JDialog dialog = JColorChooser.createDialog(frame,
                    "Color Picker",
                    false,
                    colorChooser,
                    okActionListener,
                    cancelActionListener);

                    // مرئية frame هنا جعلنا الـ
                    frame.setVisible(true);


                    // dialog سيتم فقط إظهار الـ button عند النقر
                    button.addActionListener(new ActionListener() {
                    @Override
                    public void actionPerformed(ActionEvent e) {
                    dialog.setVisible(true);
                    }
                    });


                    }

                    }
                  

ستظهر لك النافذة التالية عند التشغيل.

أنقر على الزر Change background color لإظهار الـ Color Chooser Dialog.

طريقة تعديل شكل ال JColorChooser في جافا

  تعلم Java Swing 

أفضل كورس لتعلم Java swing من الصفر الى الاحتراف .