Swing - الكلاس JButton

Java Swing الكلاس JButton

مقدمة الكلاس JButton

الكلاس JButton يستخدم لإضافة زر (Button) في واجهة المستخدم.
محتوى هذا الزر يمكن أن يكون: نص, أيقونة, نص و أيقونة بجانبه.


بنا الكلاس JButton

public class JButton
extends AbstractButton
implements Accessible
	

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

الجدول التالي يحتوي على كونستركتورات الكلاس JButton.

الكونستركتور مع تعريفه
public JButton() ينشئ كائن من الكلاس JButton يمثل Button فارغ.
public JButton(String text) ينشئ كائن من الكلاس JButton يمثل Button فيها نص.
مكان الباراميتر text نمرر النص الذي نريد وضعه بداخل الـ Button.
public JButton(Icon image) ينشئ كائن من الكلاس JButton يمثل Button فيها أيقونة.
مكان الباراميتر Icon نمرر كائن من الإنترفيس Icon يمثل الأيقونة التي سيتم وضعها في الـ Button.
public JButton(String text, Icon image) ينشئ كائن من الكلاس JButton يمثل Button فيها نص و أيقونة معاً.

  • مكان الباراميتر text نمرر النص الذي نريد وضعه في الـ Button.

  • مكان الباراميتر Icon نمرر كائن من الإنترفيس Icon يمثل الأيقونة التي سيتم وضعها في الـ Button.

دوال الكلاس JButton

الجدول التالي يحتوي على بعض دوال الكلاس JButton.

الدالة مع تعريفها
public String getText() ترجع نص كائن الـ JButton الذي قام بإستدعائها كـ String.
public void setText(String text) تستخدم لتبديل نص كائن الـ JButton الذي قام بإستدعائها.
مكان الباراميتر text نضع النص الجديد.
public Icon getIcon() ترجع أيقونة كائن الـ JButton الذي قام بإستدعائها ككائن نوعه Icon.
ترجع null في حال كان لا يملك أيقونة.
public void setIcon(Icon icon) تستخدم لوضع أيقونة لكائن الـ JButton الذي قام بإستدعائها.
مكان الباراميتر icon نضع كائن من الإنترفيس Icon يمثل الأيقونة التي ستوضع إلى جانب نص كائن الـ JButton.
public void setEnabled(boolean status) تستخدم لجعل كائن الـ JButton الذي قام بإستدعائها قابل أو غير قابل للنقر.
مكان الباراميتر status نضع false إذا أردنا جعل كائن الـ JButton غير قابل للنقر.
و نضع true إذا أردنا جعل كائن الـ JButton قابل للنقر من جديد.

ملاحظة: إفتراضياً, أي Button تضيفه يكون قابل للنقر حتى لو لم تقم باستدعاء هذه الدالة.
public void setMnemonic(int mnemonic) تستخدم لوضع خط تحت حرف معين في النص الموضوع في كائن الـ JButton الذي قام بإستدعائها.
مكان الباراميتر mnemonic نضع رقم الـ key code للحرف الذي نريد أن يتم وضع خط تحته.
مع العلم أنه يمكنك إستخدام الثوابت الموجوة في الكلاس KeyEvent في حال كنت لا تعرف رقم الـ key code للحرف الذي تريد وضع خط تحته.
public void addActionListener(ActionListener al) تستخدم لتنفيذ أوامر معينة عند النقر على كائن الـ JButton الذي قام بإستدعائها.
مكان الباراميتر al نضع كائن من الكلاس ActionListener و نفعل بداخله Override لدالة إسمها actionPerformed(ActionEvent ae).

أمثلة شاملة الكلاس JButton



Java Swing طريقة إنشاء JButton

المثال التالي يعلمك طريقة إنشاء كائن من الكلاس JButton و إضافته في النافذة.


مثال طريقة إنشاء كائن من الكلاس JButton و إضافته في النافذة.

Main.java
import javax.swing.JFrame;
import javax.swing.JButton;
import java.awt.FlowLayout;
 
public class Main {
 
    public static void main(String[] args) {
 
        JFrame frame = new JFrame("JButton demo");              // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من الكلاس
        frame.setSize(300, 250);                                // هنا قمنا بتحديد حجم النافذة. عرضها 300 و طولها 250
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   // هنا جعلنا زر الخروج من النافذة يغلق البرنامج
        frame.setLayout(new FlowLayout());                      // حتى نجعل الأشياء التي نضيفها في النافذة تترب وراء بعضها و في وسط النافذة FlowLayout إستخدمنا الـ
 
        JButton button = new JButton("Simple Button");          // Button أي قمنا بإنشاء JButton هنا أنشأنا كائن من الكلاس
 
        frame.add(button);                                      // frame في الـ button هنا أضفنا الـ
 
        frame.setVisible(true);                                 // هنا جعلنا النافذة مرئية
 
    }
 
}
		

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

طريقة إضافة JButton في ال JFrame في جافا



Java Swing طريقة تغيير نوع و لون و حجم خط الـ JButton

المثال التالي يعلمك طريقة تغيير نوع و حجم و لون الخط لكائن الـ JButton.


مثال طريقة تغيير نوع و حجم و لون الخط لكائن الـ JButton.

Main.java
import java.awt.Color;
import javax.swing.JFrame;
import javax.swing.JButton;
import java.awt.FlowLayout;
import java.awt.Font;
 
public class Main {
 
    public static void main(String[] args) {
 
        JFrame frame = new JFrame("JButton demo");              // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من الكلاس
 
        JButton button_1 = new JButton("Button 1");             // button_1 إسمه JButtonهنا قمنا بإنشاء
        JButton button_2 = new JButton("Button 2");             // button_2 إسمه JButtonهنا قمنا بإنشاء
        JButton button_3 = new JButton("Button 3");             // button_3 إسمه JButtonهنا قمنا بإنشاء
 
        Font newFont = new Font("Arial", Font.BOLD, 16);        // حجمه 16 Arial يمثل نوع خط عريض إسمه Font هنا أنشأنا كائن من الكلاس
 
        button_1.setFont(newFont);                              // newFont يستخدم الـ button_1 هنا جعلنا الـ
        button_1.setForeground(Color.cyan);                     // أزرق فاتح button_1 هنا جعلنا لون خط
        button_1.setBackground(Color.darkGray);                 // رمادي غامق button_1 هنا جعلنا لون خلفية الــ
 
        button_2.setFont(newFont);                              // newFont يستخدم الـ button_2 هنا جعلنا الـ
        button_2.setForeground(Color.red);                      // أحمر button_2 هنا جعلنا لون خط
        button_2.setBackground(Color.darkGray);                 // رمادي غامق button_2 هنا جعلنا لون خلفية الــ
 
        button_3.setFont(newFont);                              // newFont يستخدم الـ button_3 هنا جعلنا الـ
        button_3.setForeground(Color.orange);                   // برتقالي button_3 هنا جعلنا لون خط
        button_3.setBackground(Color.darkGray);                 // رمادي غامق button_3 هنا جعلنا لون خلفية الــ
 
        frame.add(button_1);                                    // frame في الـ Button_1 هنا أضفنا الـ
        frame.add(button_2);                                    // frame في الـ Button_2 هنا أضفنا الـ
        frame.add(button_3);                                    // frame في الـ Button_3 هنا أضفنا الـ
 
        frame.setSize(300, 250);                                // هنا قمنا بتحديد حجم النافذة. عرضها 300 و طولها 250
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   // هنا جعلنا زر الخروج من النافذة يغلق البرنامج
        frame.setLayout(new FlowLayout());                      // حتى نجعل الأشياء التي نضيفها في النافذة تترب وراء بعضها و في وسط النافذة FlowLayout إستخدمنا الـ
        frame.setVisible(true);                                 // هنا جعلنا النافذة مرئية
 
    }
 
}
		

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

تغيير لون و حجم و نوع خط ال JButton في جافا



Java Swing طريقة وضع صورة كخلفية للـ JButton

المثال التالي يعلمك طريقة وضع صورة كخلفية لكائن الـ JButton.

ملاحظة: عليك إنشاء مجلد و وضع الصور التي تريد وضعها على Button بداخله كما في الصورة التالية.

طريقة إضافة صورة على ال JButton

الصورة توضح أننا أضفنا مجلد إسمه Resources و وضعنا فيه صورتين start.png و settings.png.


مثال طريقة وضع صورة كخلفية لكائن الـ JButton.

Main.java
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
 
public class Main {
 
    public static void main(String[] args) {
 
        // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من الكلاس
        JFrame frame = new JFrame("JButton demo");
 
        // resources الموجودة في المجلد start الصورة + Start و وضعنا عليه الكلمة button_1 إسمه Button هنا أنشأنا
        JButton button_1 = new JButton("Start", new ImageIcon(Main.class.getResource("../resources/start.png")));
 
        // resources الموجودة في المجلد settings و وضعنا عليه الصورة button_2 إسمه Button هنا أنشأنا
        JButton button_2 = new JButton(new ImageIcon(Main.class.getResource("../resources/settings.png")));
 
        // frame الأول في الـ Button هنا قمنا بتحديد حجم و موقع الـ
        button_1.setBounds(45, 30, 120, 50);
 
        // frame الثاني في الـ Button هنا قمنا بتحديد حجم و موقع الـ
        button_2.setBounds(45, 100, 120, 50);
 
        // frame الأول و الثاني في الـ Button هنا قمنا بإضافة الـ
        frame.add(button_1);
        frame.add(button_2);
 
        // هنا قمنا بتحديد حجم النافذة. عرضها 230 و طولها 215
        frame.setSize(230, 215);
 
        // هنا جعلنا زر الخروج من النافذة يغلق البرنامج
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
        // قمنا بإضافته سابقاً Button لذلك قمنا بتحديد مكان كل Layout Manager أي لم نستخدم أي null هنا وضعنا
        frame.setLayout(null);
 
        // هنا جعلنا النافذة مرئية
        frame.setVisible(true);
 
    }
 
}
		

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

وضع أيقونة على ال JButton في جافا



Java Swing طريقة تنفيذ أوامر عند النقر على JButton

المثال التالي يعلمك طريقة تنفيذ أوامر عند النقر على الـ Button.


مثال طريقة تنفيذ أوامر عند النقر على الـ Button.

Main.java
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JLabel;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
public class Main {
 
    static JFrame frame = new JFrame("JButton demo");           // أي قمنا بإنشاء نافذة مع وضع عنوان لها JFrame هنا أنشأنا كائن من الكلاس
    static JButton plus_button = new JButton("+1");             // plus_button إسمه Button هنا أنشأنا
    static JButton minus_button = new JButton("-1");            // minus_button إسمه Button هنا أنشأنا
    static JLabel label = new JLabel("0");                      // label إسمه Label هنا أنشأنا
 
    static int counter = 0;                                     // سنستخدم هذه المتغير كعداد
 
    public static void main(String[] args) {
 
        plus_button.addActionListener(new ActionListener() {    // plus_button هنا نضع الأوامر التي نريد تنفيذها عند النقر على الزر
            @Override
            public void actionPerformed(ActionEvent e) {
                label.setText("" + (++counter));                // plus_button عند النقر على الـ label واحداً ثم توضع كنص للـ counter ستزيد قيمة المتغير
            }
        });
 
        minus_button.addActionListener(new ActionListener() {   // minus_button هنا نضع الأوامر التي نريد تنفيذها عند النقر على الزر
            @Override
            public void actionPerformed(ActionEvent e) {
                label.setText("" + (--counter));                // minus_button عند النقر على الـ label واحداً ثم توضع كنص للـ counter ستنقص قيمة المتغير
            }
        });
 
        frame.add(minus_button);                                // frame في الـ minus_button هنا أضفنا الـ
        frame.add(label);                                       // frame في الـ label هنا أضفنا الـ
        frame.add(plus_button);                                 // frame في الـ plus_button هنا أضفنا الـ
 
        frame.setSize(300, 80);                                 // هنا قمنا بتحديد حجم النافذة. عرضها 300 و طولها 80
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   // هنا جعلنا زر الخروج من النافذة يغلق البرنامج
        frame.setLayout(new FlowLayout());                      // حتى نجعل الأشياء التي نضيفها في النافذة تترب وراء بعضها و في وسط النافذة FlowLayout إستخدمنا الـ
        frame.setVisible(true);                                 // هنا جعلنا النافذة مرئية
 
    }
 
}
		

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

طريقة تنفيذ أوامر عند النقر على ال JButton في جافا