我正在嘗試制作密碼檢查器,并且嘗試將圖示設定為 X,直到用戶滿足密碼長度至少為 8 個字符的條件。我正在嘗試為程式運行時設定一個while回圈,這將反過來運行另一個while回圈來更新圖示。我這樣做是因為希望它始終檢查是否滿足條件并且不需要用戶單擊按鈕。我已將代碼放在公共表單 PasswordCheckerUI 的 initComponents 中,但是當我在程式上運行時,它說正在運行,但我的 GUI 沒有彈出。我將如何更改代碼以使其作業(如果需要)或者我必須將其移動到哪里?我嘗試使用代碼創建一個公共靜態 void 并在 initCompnents 中呼叫它,但它產生了相同的結果。最后,
public class PasswordCheckerUI extends javax.swing.JFrame {
public PasswordCheckerUI() {
initComponents();
while (Thread.currentThread().isAlive()) {
while (txtPassword.getText().length() < 8) {
lblMinCharIcon.setIcon(X);
if (txtPassword.getText().length() >= 8) {
lblMinCharIcon.setIcon(Check);
}
}
}
}
}
uj5u.com熱心網友回復:
Swing 中的事件不僅僅在用戶單擊按鈕時發生 - 它們一直在發生(移動滑鼠時、單擊時、編輯文本時、...),因此它們是解決問題的最佳方式.
例如,您可以在 上監聽檔案更改事件,txtPassword并根據密碼的新長度更改圖示:
public class PasswordCheckerUI {
private JTextField txtPassword;
private JLabel lblMinCharIcon;
public PasswordCheckerUI() {
txtPassword = new JTextField(40);
txtPassword.getDocument().addDocumentListener(
new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
checkPasswordLen(txtPassword);
}
@Override
public void removeUpdate(DocumentEvent e) {
checkPasswordLen(txtPassword);
}
@Override
public void changedUpdate(DocumentEvent e) {
checkPasswordLen(txtPassword);
}
}
);
}
private void checkPasswordLen(JTextField tf) {
if (tf.getText().length() < 8) {
lblMinCharIcon.setIcon(x);
} else {
lblMinCharIcon.setIcon(check);
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/415685.html
標籤:
