简体   繁体   English

运行方法中的代码未运行

[英]Code in run method not running

I have a program that encrypts text The code below activates when the user presses a button, AES Base64 run when type.getText() returns AES Base64, however, Strong Text Encryptor (from Jasypt) doesn't when type.getText() returns Strong Text Encryptor, the reason I'm using runnables is because I want my progressbar to update and not freeze the GUI. 我有一个用于加密文本的程序,当用户按下按钮时,以下代码将激活,当type.getText()返回AES Base64时,AES Base64运行,但是,当type.getText()返回时,Strong Text Encryptor(来自Jasypt)不会激活Strong Text Encryptor,我使用可运行对象的原因是因为我希望进度条能够更新而不冻结GUI。

Note that I'm using JavaFX FXML and this is the controller class, which implements Initializable. 请注意,我使用的是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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM