Добрый вечер, у меня есть проблемы в управлении индикатор выполнения, пожалуйста, проверьте мой код и скажите мне, где проблема:Прогресс бар не работает
/**
** @author Islam */
public class Register extends javax.swing.JFrame implements Runnable {
static final int MY_MINIMUM = 0;
static final int MY_MAXIMUM = 100;
private Pattern pattern;
private Matcher matcher;
private static final String EMAIL_PATTERN =
"^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@"
+ "[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$";
boolean isValidPassord = true;
Thread th;
public Register() {
initComponents();
passwordTextF.addKeyListener(new passwordListener());
passwordMeter = new JProgressBar();
passwordMeter.setMinimum(MY_MINIMUM);
passwordMeter.setMaximum(MY_MAXIMUM);
th = new Thread(this);
th.start();
}
public void updateBar(int newValue) {
passwordMeter.setValue(newValue);
passwordMeter.setStringPainted(true);
System.out.println(newValue);
}
public void run() {
for (int i = MY_MINIMUM; i <= MY_MAXIMUM; i++) {
updateBar(i);
try {
Thread.sleep(100);
} catch (InterruptedException ex) {
Logger.getLogger(Register.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
class passwordListener implements KeyListener {
public void keyPressed(KeyEvent e) {
passwordLabel.setForeground(Color.BLACK);
}
public void keyReleased(KeyEvent e) {
// Register.this.validatePassword(passwordTextF.getText());
if (!isValidPassord) {
// new PasswordMeterHandler().start();
}
}
public void keyTyped(KeyEvent e) {
}
}
public boolean validateEmail(String mailFromForm) {
pattern = Pattern.compile(EMAIL_PATTERN);
matcher = pattern.matcher(mailFromForm);
return matcher.matches();
}
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
int i = 0;
this.validateEmail(nameTextF.getText());
this.validatePassword(passwordTextF.getText());
if (!matcher.matches()) {
EMailLabel.setForeground(Color.red);
}
if (!isValidPassord) {
passwordLabel.setForeground(Color.red);
}
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
}
public static void main(String args[]) {
/*
* Create and display the form
*/
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
Register frame = new Register();
frame.setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JLabel EMailLabel;
private javax.swing.JTextField EMailTextF;
private javax.swing.ButtonGroup buttonGroup1;
private javax.swing.ButtonGroup buttonGroup2;
private javax.swing.JComboBox countryCombo;
private javax.swing.JComboBox genderCombo;
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JPanel jPanel1;
private javax.swing.JLabel nameLabel;
private javax.swing.JTextField nameTextF;
private javax.swing.JLabel passwordLabel;
private javax.swing.JProgressBar passwordMeter;
private javax.swing.JPasswordField passwordTextF;
private javax.swing.JLabel strengthLabel;
private javax.swing.JLabel userNameLabel;
private javax.swing.JTextField userNameTextF;
// End of variables declaration
}
этот вопрос удалось решить там несколько раз, в том числе фон для JProgressBar – mKorbel
Я бы посоветовал прочитать учебник [Swing concurrency tutorial] (http://docs.oracle.com/javase/tutorial/uiswing/concurrency/index.html), а затем сравнить ваш код с [Swing progress tutorial] (http://docs.oracle.com/javase/tutorial/uiswing/components/progress.html) – Robin
Возможный дубликат: http://stackoverflow.com/questions/14139298/thread-not-updating-progress-bar- на glasspane/14 139424 # 14139424. Как минимум, все выводы, изложенные в этом ответе, применимы здесь и будут решать проблему. –