2014-01-28 36 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