非静态变量jTextArea不能从静态内容中引用

时间:2014-01-02 00:45:43

标签: java swing netbeans-7 static

我正在尝试在jTextArea中显示已分析文本的结果,我正在通过Netbeans编写此程序。下面是我试图修复的代码,以便在jTextArea3中显示结果,但是它的显示非静态变量无法从静态内容错误中引用。因为在Netbeans中jTextArea代码将由它自己生成,所以我无法改变任何东西。请帮助我

    public static void main(String[] args) throws NetworkException, AnalysisException {

       File textSRC = new File("MyText.txt");
       String myTextCount = null;
       BufferedReader myTextBr = null;
       String check = "";
       try {
       String myTextCurrentLine;
       myTextBr = new BufferedReader(new FileReader(textSRC));
       while ((myTextCurrentLine = myTextBr.readLine()) != null) {
           myTextCount = myTextCount + " " + myTextCurrentLine;
       }       
       // Sample request, showcasing a couple of TextRazor features
       String API_KEY = "7d5066bec76cb47f4eb4e557c60e9b979f9a748aacbdc5a44ef9375a";

       TextRazor client = new TextRazor(API_KEY);       
       client.addExtractor("words");
       client.addExtractor("entities");
       client.addExtractor("entailments");
       client.addExtractor("senses");
       client.addExtractor("entity_companies");              
       String rules = "entity_companies(CompanyEntity) :- entity_type(CompanyEntity, Company').";        
       client.setRules(rules);                       
       AnalyzedText response = client.analyze(myTextCount);                    
       File file = new File("Hello1.txt");
       // creates the file
       file.createNewFile();
       // creates a FileWriter Object
       FileWriter writer = new FileWriter(file); 
       // Writes the content to the file

       for (Sentence sentence : response.getResponse().getSentences()) {
           for (Word word : sentence.getWords()) {
            System.out.println("----------------");
               System.out.println("Word: " + word.getLemma());

               for (Entity entity : word.getEntities()) {
                   ///System.out.println("Matched Entity: " + entity.getEntityId());
               }                  
               for (Sense sense: word.getSenses()) {
                   //System.out.println("Word sense: " + sense.getSynset() + " has score: "    + sense.getScore());
               }                
           }
       }

                   // Use a custom rule to match 'Company' type entities                       
       for (Custom custom : response.getResponse().getCustomAnnotations()) {
           for (Custom.BoundVariable variable : custom.getContents()) {
               if (null != variable.getEntityValue()) {
                   for (Entity entity : variable.getEntityValue()) {
                       String CompanyFound = ("Variable: " + variable.getKey() +"\n"+    "Value:" + entity.getEntityId());
                       System.out.println(CompanyFound);
                       jTextArea3.append(CompanyFound);
                       writer.write(CompanyFound); 
                       writer.flush();
                       writer.close();
                   }
               }
           }
       }  
    }catch (IOException ex) {
    }           
   }

1 个答案:

答案 0 :(得分:2)

你的错误非常清楚,在静态上下文中你不能引用非静态的东西。因为静态属于类级别,您不能使用实例级别的东西而不使用它的任何实例。为此,您必须实例化一个对象才能使用它。

示例:

public class Test{

private JTextArea textArea;


public static void someMethod(){
    //textArea = new JTextArea(); you can't do this
     //you need an instance
     Test test = new Test();
     test.textArea = new JTextArea(10,10);
     test.textArea.setText("Hello world");

}
}