Java 运行方法中的代码未运行

Java 运行方法中的代码未运行,java,javafx,runnable,Java,Javafx,Runnable,我有一个加密文本的程序 下面的代码在用户按下按钮时激活,AES Base64在键入时运行。getText()返回AES Base64,但是,强文本加密程序(来自Jasypt)在键入时不会激活。getText()返回强文本加密程序,我使用runnables的原因是因为我希望progressbar更新而不是冻结GUI 注意,我使用的是JavaFXML,这是控制器类,它实现了可初始化 switch (type.getText()) { case "AES Base64

我有一个加密文本的程序 下面的代码在用户按下按钮时激活,AES Base64在键入时运行。getText()返回AES Base64,但是,强文本加密程序(来自Jasypt)在键入时不会激活。getText()返回强文本加密程序,我使用runnables的原因是因为我希望progressbar更新而不是冻结GUI

注意,我使用的是JavaFXML,这是控制器类,它实现了可初始化

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()
方法只有在您启动
线程时才会被调用,这是您在第一个案例中所做的,即,对于
案例“AES Base64”
,但在第二个案例中您没有启动
线程,因此只需将
t.start()
添加到
案例“强文本加密器”
,你从不启动线程,所以这并不奇怪,是吗?@JBNizet我不是叫t.start()吗?对不起,我是新来的Java@JBNizet我的天啊,我没意识到!非常感谢。看看你的代码。不,你没有。你这样做是为了AES线程。但对Jasypt一号来说不是。