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