我有一个加密文本的程序 下面的代码在用户按下按钮时激活,当 type.getText() 返回 AES Base64 时运行 AES Base64,但是,当 type.getText() 返回强文本加密器时,强文本加密器(来自 Jasypt)不会运行,这是我的原因使用 runnables 是因为我希望进度条能够更新而不是卡住 GUI。
请注意,我使用的是 JavaFX FXML,这是 Controller 类,它实现了可初始化。
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
时才会被调用,就像您在第一种情况下所做的那样,即 情况“AES Base64”
,但在第二种情况下您没有启动线程
,因此只需将t.start()
添加到您的情况中“强文本加密器”
关于java - run方法中的代码未运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42872231/