Witam. Mam taki kod klienta w Javie(to będzie prosty chat Klient-Serwer).
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.*;
import java.net.*;
import java.util.Scanner;
import javax.swing.*;
public class Client extends JFrame implements ActionListener
{
JButton sendB;
JTextField textField;
JTextArea messageBox;
public Client() {
setSize(750, 700);
setResizable(false);
setTitle("Chat client");
setLayout(null);
try {
for (UIManager.LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
if ("Black".equals(info.getName())) {
UIManager.setLookAndFeel(info.getClassName());
break;
}
}
} catch (Exception e) {
}
//JButton WYSYLANIE WIADOMOSCI
sendB = new JButton("Wyślij");
sendB.setBounds(613, 597, 120, 35);
add(sendB);
sendB.addActionListener(this);
//JtextField POLE TEXTOWE
textField = new JTextField();
textField.setBounds(215, 597, 400, 36);
add(textField);
textField.addActionListener(this);
//JTextArea WIADOMOSCI
messageBox = new JTextArea();
messageBox.setBounds(215, 70, 516, 500);
add(messageBox);
//Skrol na wiadomości
JScrollPane skrol = new JScrollPane(messageBox);
skrol.setBounds(215, 70, 516, 500);
add(skrol);
}
public static void main(String[] args) throws IOException {
Client window = new Client();
window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
window.setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e)
{
Object source = e.getSource();
String message;
class SendingMessages extends Thread {
if(source == sendB)
{
try {
Socket socket = new Socket("127.0.0.1", 3001);
DataOutputStream messageOut = new DataOutputStream(socket.getOutputStream());
messageOut.writeUTF(message = (textField.getText()));
} catch (IOException e1) {
e1.printStackTrace();
}
}
}
}
}
Coś jest źle z IF'em w ActionListenerze? Przed dodaniem go do wątku było dobrze, a po dodaniu jest podkreślony na czerwono. W jakiej klasie mam umieszczać wątki i czy wszystko co jest związane z JButtonem i JTextFieldem (czyli np. że pi naciśnięciu przycisku ma wziąć tekst z pola tekstowego i wysłać go na serwer) mam dawać w ActionListenerze?
I jeszcze jak zrobić aby w JTextArea wyświetlały się przychodzące wiadomości bo z tego co wiem nie można JTextArea dać w ActionListenera.