setContentPane () и addActionListener получают исключение NullPointerException - PullRequest
0 голосов
/ 30 сентября 2018
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

public class Form1 {
   private JPanel panel1;
   private JButton button1;


   public Form1() {
       button1.addActionListener(new ActionListener() {
          @Override
          public void actionPerformed(ActionEvent e) {
             System.out.println("Button clicked");
          }
       });
    }

    public static void main(String args[]){
       JFrame frame = new JFrame("Form 1");
       frame.setContentPane(new Form1().panel1);
       frame.pack();
       frame.setVisible(true);
    }
}

Ошибка относится к setContentPane в основном методе, а затем к actionListener.Я отправил точную ошибку ниже.Почему это?Я создал это с помощью средства создания форм IntelliJ IDEA.

Exception in thread "main" java.lang.NullPointerException  
    at Form1.<init>(Form1.java:12)  
    at Form1.main(Form1.java:22)

Ответы [ 2 ]

0 голосов
/ 30 сентября 2018

Таким образом, есть 2 проблемы, с которыми вы столкнетесь, которые вызывают эту ошибку.После создания объекта (в данном случае JButton, JPanel) вы должны создать его экземпляр.Есть много разных способов сделать это, и это зависит от того, что вы пытаетесь сделать, но самое простое решение этой проблемы - добавить следующие строки в конструктор:

panel1 = new JPanel();
button1 = new JButton();

После этого ваш код должен нормально работать.

0 голосов
/ 30 сентября 2018

В Java вы не можете использовать переменные, которые не инициализированы, иначе вы получите NPE.Посмотрите следующий код и, пожалуйста, прочитайте книгу по Java:)

public class Form1 {
   private JPanel panel1;
   private JButton button1;


   public Form1() {
      panel1 = new JPanel();
      button1 = new JButton1("Press Me");
      panel1.add(button1);
       button1.addActionListener(new ActionListener() {
          @Override
          public void actionPerformed(ActionEvent e) {
             System.out.println("Button clicked");
          }
       });
    }

    public static void main(String args[]){
       JFrame frame = new JFrame("Form 1");
       frame.setContentPane(new Form1().panel1);
       frame.pack();
       frame.setVisible(true);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...