[英]Code in run method not running
我有一个用于加密文本的程序,当用户按下按钮时,以下代码将激活,当type.getText()返回AES Base64时,AES Base64运行,但是,当type.getText()返回时,Strong Text Encryptor(来自Jasypt)不会激活Strong Text Encryptor,我使用可运行对象的原因是因为我希望进度条能够更新而不冻结GUI。
请注意,我使用的是JavaFX FXML,这是控制器类,实现了Initializable。
switch (type.getText()) {
case "AES Base64":
t = new Thread(new Runnable() {
@Override
public void run() {
try {
strToEncrypt = input.getText();
bar.setProgress(0.11);
strPssword = pass.getText();
bar.setProgress(0.22);
AES.setKey(strPssword);
bar.setProgress(0.33);
AES.encrypt(strToEncrypt.trim());
bar.setProgress(0.44);
output.setText(AES.getEncryptedString());
bar.setProgress(0.55);
log.setText("");
bar.setProgress(0.66);
log.appendText("String to encrypt " + strToEncrypt + "\n");
bar.setProgress(0.77);
log.appendText("Password " + strPssword + "\n");
bar.setProgress(0.88);
log.appendText("Encrypted String " + AES.getEncryptedString() + "\n");
bar.setProgress(1.0);
hasChecked = false;
} catch (Exception ex) {
bar.setProgress(0);
Error(ex.getMessage());
Logger(ex.getMessage());
}
}
});
t.start();
break;
case "Strong Text Encryptor":
Thread t = new Thread(new Runnable() {
@Override
public void run() {
try {
StrongTextEncryptor textEncryptor = new StrongTextEncryptor();
bar.setProgress(0.33);
textEncryptor.setPassword(pass.getText());
bar.setProgress(0.66);
output.setText(textEncryptor.encrypt(input.getText()));
bar.setProgress(1.0);
} catch (Exception ex) {
bar.setProgress(0);
Error(ex.getMessage());
Logger(ex.getMessage());
}
}
});
break;
}
run()
,当您启动该方法将被调用仅Thread
,你在你的第一种情况,即做,为case "AES Base64"
,但你没有启动Thread
在第二种情况下,所以只需添加t.start()
到您的case "Strong Text Encryptor"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.