2014-01-28 2 views
1

Я создаю свой первый графический интерфейс, и у меня возникла проблема, которую я не могу преодолеть. После выполнения метода нажатием кнопки, я хочу установить JTextArea в значение "" или null. В тот момент, когда нажата кнопка, выполняется метод, и программа работает как обычно, но TextArea не пуст. Я получаю «java.lang.NullPointerException» в пределах этого кода:Java Swing: настройка JTextArea на Null после метода

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(...) на свои компоненты. Хотя это может показаться новичку лучшим способом создания сложных графических интерфейсов, это ошибка, и больше вы создаете графический интерфейс Swing, тем больше вы учитесь уважать и использовать менеджеров макетов и видите, что эти существа очень помогают в создании гибких, красивых и должен быть, сложный GUI.
2

Две вещи приходят на ум ...

Вместо использования append, вы должны использовать setText. Append делает именно то, что это звучит, добавляет текст в конец базового Document из JTextArea, где setText заменит содержимое Document на новое значение.

и/или JTextAreaResult является null

1

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

Эти вещи не то же самое. "" - ссылка на пустой объект String. null, с другой стороны, является ссылкой на ничего. Что значит получить NullPointerException, так это то, что ваша программа пыталась выполнить некоторую ссылку, но это была нулевая ссылка.

Если вы хотите удалить свое текстовое поле, установите текст в пустую строку, используя "". НЕ устанавливайте ничего в null.

+0

Собственно, 'setText' может принимать' null', использовать его все время. – MadProgrammer

Смежные вопросы