java - run方法中的代码未运行

标签 java javafx runnable

我有一个加密文本的程序 下面的代码在用户按下按钮时激活,当 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/

相关文章:

java - 取消部署我的应用程序时,Tomcat 抛出 java.lang.UnsupportedOperationException

javafx - Kotlin中尚未使用TestFX初始化lateinit属性xxx

java - 使用 GWT 可视化显示多个图形

java - JBoss 启动 java.io.FileInputStream 初始化 AbstractKernelController 时出错

java - 使用 HttpUnit 中的 WebRequest 之类的东西向 ServletUnit 提交表单的最简单方法

java - 如何使 JavaFx 中的 TableView 响应式?

android - 如何在android中检查程序如何崩溃?

java - 修改服务器以允许多个客户端同时连接

java - 实现合并排序算法的工作线程

animation - JavaFX:使用 PathTransition 作为绘图笔的动画