Odbior danych + umieszcznie danych w TextArea

0

Napisałem aplikacje która wymienia informacje wykorzystując sockety. Jednak napotkałem na problem odbierając informacje przy pomocy PrintWritera, nie jestem ich w stanie umiescic w JTextArea, pomimo ze odbierane są jako String, wyskakuje mi błąd

Exception in thread "Thread-0" java.lang.NullPointerException

Poniżej zamieszczam kod aplikacji łączącej się z serwerem:

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
import java.util.Vector;

import javax.swing.*;
public class GUI extends connect{

	public static void main(String[] args) throws IOException{
		connect c =new connect();
		Thread t = new Thread(c);
		t.start();
		
		JFrame ramka = new JFrame();
		
		ramka.setVisible(true);
		ramka.setTitle("Ramka");
		ramka.setSize(300, 400);
		ramka.setLocationRelativeTo(null);
		ramka.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		JPanel panel = new JPanel();
		panel.setLayout(new BorderLayout(3,3));
		ramka.add(panel);
		
		final JTextField okno = new JTextField(20);
		panel.add(okno, BorderLayout.NORTH);
		okno.setText("WIADOMOSC");
		
		oknoDwa = new JTextArea(20,20);
		panel.add(oknoDwa, BorderLayout.CENTER);
		oknoDwa.setText("TU SA WIADOMOSCI");
		oknoDwa.setEditable(false);
		
		JButton wyslij = new JButton("Wyslij");
		panel.add(wyslij, BorderLayout.SOUTH);

	
		
		wyslij.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				out.println(okno.getText());
				
				
			}
		});
	}


	public JButton wyslij;
	public static String s;
	public static JTextArea oknoDwa;

	

}

class connect implements Runnable {
	public void run() {
		Socket socket;
		try {
			socket = new Socket("localhost", 8189);
			out = new PrintWriter(socket.getOutputStream(), true);
			in = new Scanner(socket.getInputStream());
		
			while(in.hasNextLine()){
				String line= in.nextLine();
				GUI.oknoDwa.setText(line);
//				System.out.println(in.nextLine());
			}
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	

	public static PrintWriter out;
	public String line;
	public static Scanner in;
}

Dziękuję za pomoc i zainteresowanie.

0

Ten kod to jest jakiś koszmar. Co to za pola statyczne? O co to za ustawianie pól klasy w metodzie main()? O co w ogóle chodzi? Gdzie ci się pojawia taki wyjątek? Moja rada? Skasuj ten kod. Napisz to jeszcze raz, tym razem porządnie i z głową.
Podpowiem że connect to bardzo zła klasa dla Runnable, szczególnie takiego który wcale żadnego łączenia nie robi, a za to zajmuje się odbieraniem komunikatów...
Podpowiem też że klasa GUI nie powinna być przy okazji tym twoim connectem bo to bez sensu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1