Swingطريقة تغيير لون الـ JProgressBar على حسب قوة كلمة المرور
المثال التالي يعلمك طريقة تغيير لون الـ Progress Bar على حسب طول النص المدخل في JPasswordField.
مثال
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);
}
});
}
}
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 على حسب عدد الأحرف المدخلة.