DataOutputStream导致空指针异常

时间:2019-11-15 18:24:32

标签: java swing nullpointerexception

我正在尝试创建一个聊天应用程序,由于某种原因,每当我单击该按钮时,在传出消息时都会出现空指针异常。

这里是客户:

public class Person1 extends JFrame{
  static String con="";
  static JTextArea conversation;
  static JButton button;
  static JTextField message;
  static DataInputStream incoming;
  static DataOutputStream outgoing;
  static Socket s;
  Person1(){
      setDefaultCloseOperation( WindowConstants.EXIT_ON_CLOSE);
      JFrame f= new JFrame("Person1");
      message=new JTextField();
      button=new JButton("Send");
      conversation=new JTextArea();
      f.setLayout(null);
      f.setVisible(true);
      f.setSize(800,800);
      button.setFocusPainted(false);
      button.setBounds(350,650,100,30);
      conversation.setBounds(100,100,600,400);
      message.setBounds(200,600,400,30);
      message.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
      conversation.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
      conversation.setEditable(false);
      f.add(conversation);
      f.add(button);
      f.add(message);
      button.addActionListener(new ActionListener() {
          @Override
          public void actionPerformed(ActionEvent e) {
              String str=message.getText();
              addText(str);
              try {
                  outgoing.writeUTF(str);
                  outgoing.flush();
              } catch (IOException e1) {
                  // TODO Auto-generated catch block
                  e1.printStackTrace();
              }
          }

      });
  }
  private static void addText(String msg) {
      // TODO Auto-generated method stub
      System.out.println(msg);
      if(!msg.equals("")) {
      con+=msg+"\n";
      conversation.setText(con);
      }}
public static void main(String args[]) {
  EventQueue.invokeLater(new Runnable() {
      public void run() {
          new Person1();
      }
  });
  try {
      s=new Socket("127.0.0.1",1000);
      incoming=new DataInputStream(s.getInputStream());
      outgoing=new DataOutputStream(s.getOutputStream());

      while(true) {
      String msg=incoming.readUTF();
      if(!msg.trim().equals(""))
      addText(msg);
      }
      }catch(Exception e) {

      }


  }
}

这是服务器:

public class Person2 extends  JFrame {
    static String con="";
    static JTextArea conversation;
    static JButton button;
    static JTextField message;
    static DataInputStream incoming;
    static DataOutputStream outgoing;
    static Socket socket;
    static ServerSocket s;
Person2(){
    setDefaultCloseOperation( WindowConstants.EXIT_ON_CLOSE);
    JFrame f= new JFrame("Person2");
    message=new JTextField();
    button=new JButton("Send");
    conversation=new JTextArea();
    f.setLayout(null);
    f.setVisible(true);
    f.setSize(800,800);
    button.setFocusPainted(false);
    button.setBounds(350,650,100,30);
    conversation.setBounds(100,100,600,400);
    message.setBounds(200,600,400,30);
    message.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
    conversation.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
    conversation.setEditable(false);
    f.add(conversation);
    f.add(button);
    f.add(message);
    button.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            String str=message.getText();
            addText(str);
            try {

                outgoing.writeUTF(
                        str);
                outgoing.flush();
            } catch (IOException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
        }

    });
}
private static void addText(String msg) {
    // TODO Auto-generated method stub
    System.out.println(msg);
    if(!msg.equals("")) {
    con+=msg+"\n";
    conversation.setText(con);
    }}
public static void main(String args[]) {
    try {
        s=new ServerSocket(1000);
        socket=s.accept();

        incoming=new DataInputStream(socket.getInputStream());

        outgoing=new DataOutputStream(socket.getOutputStream());

        while(true) {
        String msg=incoming.readUTF();
        if(!msg.trim().equals(""))
        addText(msg);
        }
        }catch(Exception e) {

        }
EventQueue.invokeLater(new Runnable() {
    public void run() {
        new Person2();
    }
});

}
}


这是错误

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at Person2$1.actionPerformed(Person2.java:43)
    at java.desktop/javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1967)
    at java.desktop/javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2308)

0 个答案:

没有答案