Swingطريقة تغيير لون الـ JProgressBar على حسب قوة كلمة المرور

المثال التالي يعلمك طريقة تغيير لون الـ Progress Bar على حسب طول النص المدخل في JPasswordField.


مثال

Main.java
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JProgressBar;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.Color;
 
public class Main {
 
    public static void main(String[] args) {
 
    // هنا قمنا بإنشاء النافذة و جميع الأشياء التي سنضعها فيها
        JFrame frame = new JFrame("JProgressBar demo");
 
        JLabel label_1 = new JLabel("Password");
        JLabel label_2 = new JLabel("Strength");
        JPasswordField password = new JPasswordField();
        JProgressBar progress = new JProgressBar(0, 10);
 
        // frame هنا قمنا بتحديد أماكن الأشياء التي سنضيفها في الـ
        label_1.setBounds(20, 20, 60, 30);
        password.setBounds(90, 20, 140, 30);
        label_2.setBounds(20, 60, 60, 30);
        progress.setBounds(90, 68, 140, 15);
 
        // frame هنا قمنا بإضافة جميع الأشياء التي قمنا بتعريفها سابقاً في الـ
        frame.add(label_1);
        frame.add(password);
        frame.add(label_2);
        frame.add(progress);
 
        // frame هنا قمنا بتحديد خصائص الـ
        frame.setSize(300, 150);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLayout(null);
        frame.setVisible(true);
 
 
        // password هنا نضع الأوامر التي نريد تنفيذها عند كتابة أو حذف أي حرف موجود في مربع الـ
        password.addKeyListener(new KeyListener() {
            @Override
            public void keyTyped(KeyEvent e) { }
 
            @Override
            public void keyPressed(KeyEvent e) { }
 
            @Override
            public void keyReleased(KeyEvent e)
            {
                int passLength = password.getPassword().length;
                progress.setValue(passLength);
 
                // إلى الأحمر Progress Bar إذا قام المستخدم بإدخال 4 أحرف, سيتم تغيير لون الـ
                if(passLength < 5)
                    progress.setForeground(Color.red);
 
                // إلى الأصفر Progress Bar إذا قام المستخدم بإدخال 5-10 أحرف, سيتم تغيير لون الـ
                else if(passLength >= 5 && passLength < 10)
                    progress.setForeground(Color.yellow);
 
                // إلى الأخضر Progress Bar إذا قام المستخدم بإدخال 10 أحرف أو أكثر, سيتم تغيير لون الـ
                else if(passLength >= 10)
                    progress.setForeground(Color.green);
 
            }
        });
 
    }
 
}

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

قم بإدخال أي نص و لاحظ كيف سيتغير لون الـ Progress Bar على حسب عدد الأحرف المدخلة.

طريقة تغيير لون ال JProgressBar على حسب قيمته في جافا