2014-01-28 37 views
1

我正在创建我的第一个GUI,并且遇到了我似乎无法克服的问题。通过按下按钮执行一个方法后,我想将JTextArea设置为“”或null。当按下按钮时,一个方法执行,程序正常运行,但TextArea不会清空。我得到这个代码中的“显示java.lang.NullPointerException”:Java Swing:在方法后设置JTextArea为空

JButton JInputFile = new JButton("Input network file"); 
    JInputFile.addActionListener(new ActionListener() { 
     public void actionPerformed(ActionEvent arg0) { 
      final JFileChooser fc = new JFileChooser(); 
      int returnVal = fc.showOpenDialog(null); 
      if (returnVal == JFileChooser.APPROVE_OPTION) { 
       File file = fc.getSelectedFile(); 
       String fileName = file.getName(); 
       network = new Network(fileName); 
       JTextAreaResult.append(null); //exception points to this line 
      } 
     } 
    }); 
    JInputFile.setFont(new Font("Calibri", Font.PLAIN, 11)); 
    JInputFile.setBounds(20, 56, 294, 20); 
    contentPane.add(JInputFile); 

我可能没有能提供足够的信息,以便让我知道。什么可能会阻止我的JTextArea清空,我该如何解决它?

回答

4
  • 首先,它不是.append(null);而是.setText("");
  • 另一方面,您的JTextAreaResult变量在您尝试使用它的范围中是否为null?
  • 第三,您的变量名应符合Java命名标准,并应以小写字母开头。这有助于他人(我们!)更好地阅读和理解您的代码。
  • 另外,您似乎使用空布局并在组件上调用setBounds(...)。虽然这对新手来说可能是创建复杂GUI的更好方法,但这是一个谬误,您创建Swing GUI的次数越多,您越能学会尊重和使用布局管理器,并发现这些生物能够极大地帮助您创建灵活,美观且如果需要是复杂的GUI。
2

两件事情浮现在脑海中......

而不是使用append,你应该使用setText。 Append的确如它所听起来的那样,它将文本追加到JTextArea的基础Document的末尾,其中setText将用新值替换Document的内容。

和/或JTextAreaResultnull

1

"I want to set a JTextArea to "" or null."

这些东西是不一样的东西。 ""是对一个空的String对象的引用。另一方面,null,是一无所有。获得NullPointerException的意思是,你的程序试图遵循一些引用,但它是一个空引用。

如果您要清空文本字段,请使用""将文本设置为空字符串。不要设置任何东西到null

+0

其实,'setText'可以带'null',一直使用它。 – MadProgrammer