.getText nie przekazuje Stringa

0

Witam! :)
Mam podejrzewam, że dosyć prosty i trywialny problem.

Nie mogę przekazać Stringa pobieranego z GUI w linijce 30 w kodzie klasy GUI, do metody z linijki 18.
Co robię źle? Poproszę o wszelkie sugestie oraz pomoc.

Kod GUI

public class GUI extends javax.swing.JFrame {

    Thread send = new Thread(new SendTheMessage());
    Thread receive = new Thread(new ReceiveTheMessage());
    public String message;

    /*public void sTM() {
     SendTheMessage call = new SendTheMessage();
     call.getTheString(message);
     }*/
    public GUI() {
        initComponents();
        receive.start();
    }

    public String getThisText() {
        message = getTheText.getText();
        System.out.println("Text: " + message);
        return message;
    }

    // DEFINICJA GUI USUNIĘTA, CO BY OSZCZĘDZIĆ MIEJSCE                     

    private void sendButtonActionPerformed(java.awt.event.ActionEvent evt) {                                           
        send.start();
    }                                          

    private void getTheTextActionPerformed(java.awt.event.ActionEvent evt) {                                           
        getTheText.getText();
    }                                          

    private void getTheTextMouseClicked(java.awt.event.MouseEvent evt) {                                        
        getTheText.setText("");
    }                                       

    private void exitButtomActionPerformed(java.awt.event.ActionEvent evt) {                                           
        // TODO add your handling code here:
        System.exit(0);
    }                                          
    SendTheMessage daj = new SendTheMessage(message);

    // Variables declaration - do not modify                     
    public javax.swing.JTextArea displayText;
    private javax.swing.JButton exitButtom;
    protected static javax.swing.JTextField getTheText;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JPanel jPanel1;
    private javax.swing.JScrollPane jScrollPane2;
    public javax.swing.JButton sendButton;
    // End of variables declaration                   
}

Docelowo String ma być przekazany do tej klasy, która prześle go dalej na serwer. Jednak podczas próby wysłania pojawia się komunikat:

Null Pointer Exception w linicje bufWysylany = new byte[message.length()];

Kod klasy przekazującej

package klient1_gui;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class SendTheMessage implements Runnable {

    byte[] server = new byte[]{(byte) 169, (byte) 254, (byte) 203, (byte) 150};
    byte[] bufWysylany;
    public String message;
    //SendTheMessage a = new SendTheMessage();

    public SendTheMessage(String s) {
        this.message = s;
    }

    public SendTheMessage() {

    }

    public void getTheString(String message) {
        this.message = message;

    }

    @Override
    public void run() {

        try {
            bufWysylany = new byte[message.length()];
            DatagramPacket packet = new DatagramPacket(bufWysylany, bufWysylany.length);
            byte[] buffer = message.getBytes();
            InetAddress serverAdress = InetAddress.getByAddress(server);
            DatagramSocket socket = new DatagramSocket();
            socket.send(new DatagramPacket(buffer, buffer.length, serverAdress, 5555));

        } catch (IOException e) {
            System.exit(0);
            System.err.println("Trolololoooo");
        }
    }
}

Z góry dziekuję za pomoc.

wstawienie kodu do posta - @furious programming

0

pole tekstowe getTheText (swoja droga niezbyt dobra nazwa...) nie jest nigdzie inicjalizowane a chcesz go uzywac. napraw to :)

0

@katelx Jest inicjalizowana. Po prostu we wrzucanym kodzie usunąłem GUI, żeby było czytelniej, ale teraz wrzucam całość.

http://pastebin.com/cKezRXig

PS. Jaką nazwę byś proponował?

0
   private void getTheTextActionPerformed(java.awt.event.ActionEvent evt) {                                          
        getTheText.getText();
    } 

tu nic nie robisz. po prostu pobierasz sobie text i GC go zmiata

edit: w ogole jakies randomowe rzeczy robisz, nazwy metod tez niezbyt trafne, umiesz cokolwiek tej javy czy tak kopiujesz byle co i liczysz ze zadziala?

0

@katelx 2 tygodnie uczę się Javy.

0
cieniospren napisał(a):

@katelx 2 tygodnie uczę się Javy.

Zamiast w GUI grzebać poczytaj o podstawach i koncepcjach programowania nazywania etc. Bo tak to narobisz sobie złych nawyków.
Zamiast zmiennej send nazwij to sendThread, message => messageString, w małych projektach to nie robi różnicy ale jak się rozrasta to później będzie przekopywanie czym to tak właściwie jest...

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