首页 > 解决方案 > Java Getter 和 Setter 在 Swing ActionListner 中不起作用

问题描述

我正在用 Java 制作代码编辑器,并使用RSyntaxTextAreajar 文件来获取帮助。问题是 - 有一个ComboBox我们可以切换语言的应用程序。RSyntaxTextArea:中有两种方法,setSyntaxEditingStyle()它们在动作侦听getSyntaxEditingStyle()器中不起作用。ComboBox请帮助我,我被严重卡住了。这是代码。两种方法:

textArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_JAVA);
and
String a = textArea.getSyntaxEditingStyle();

不能在动作事件函数中工作。它们在外面工作得很好,但没有办法在外面使用它。

public void actionPerformed(ActionEvent e) {
                
    if ( language == "Python") {
        try {
            textArea.setSyntaxEditingStyle(null);
            textArea.setSyntaxEditingStyle(SyntaxConstants.SYNTAX_STYLE_PYTHON);
            textArea.getSyntaxEditingStyle();
            String command = "python " + opened_file; 
            Runtime.getRuntime().exec("cmd /c start cmd.exe /K " + command);
        } catch (IOException e5) {
            e5.printStackTrace();
        }
    }
    
    else if (language == "Java") {
        try {
            // Look Here
            // Look Here
            // Look Here
            // Look Here
            // Look Here
            // Look Here
            // Look Here
            // Look Here
            // Look Here {
         textArea
          .setSyntaxEditingStyle(
              SyntaxConstants.SYNTAX_STYLE_JAVA
          );

            String a = textArea.getSyntaxEditingStyle();
            System.out.println(a);
                    
            // Look Here }
            // Look Here
            // Look Here
            // Look Here
            // Look Here
            // Look Here
            // Look Here
            // Look Here
            
            String classpath = opened_file.replace(".java", "");
            String [] last_name_list = opened_file.split("\\\\");
            String lastname = last_name_list[last_name_list.length - 1];
            String folderpath = opened_file.replace(lastname, "");
            String []classpath_1 = classpath.split("\\\\");
            String class_file = classpath_1[classpath_1.length-1];
            
            Runtime rt = Runtime.getRuntime();
            rt.exec("cmd /c start cmd.exe /K \"cd " + folderpath + " && javac " + opened_file + " && java " + class_file +"\"");
            
            
        }catch (Exception e5) {
            e5.printStackTrace();
        }
    }

标签: javagettersetter

解决方案


我解决了这个问题。有时 getter 和 setter 在动作函数中不起作用。为了解决这个问题,我们可以使用线程。首先将您的变量声明为 volatile。

然后在线程函数中使用 if else 并在那里使用 getter 和 setter


推荐阅读