Я создаю простой графический интерфейс чата, и я написал сервер и клиент GUI, и я могу отправить сообщение из клиентского интерфейса на сервер.
Моя проблема с получением сообщения от сервера на фрейме.
Когда я использую бесконечный цикл, кадр заблокирован. Я не знаю, как я должен разделить эту вещь, чтобы любое сообщение отображалось на JTextArea
.
Мой вопрос:
Есть ли способ разделить фрейм для обработки информации «отправить» и «получить» с сервера?
Мой графический интерфейс состоит из JTextField
, JTextArea
и JButton
.
При нажатии JButton
текст с JTextField
отправляется на сервер:
String u = jTextField.getText();
out.writeUTF(u);
Но я не знаю, что мне следует сделать, чтобы получить JTextArea
уменьшить все время поступления информации на:
msg = in.readUTF();
jta.append(msg + "\n");
//
Если поток является классом или компонентом в классе GUI, потому что я создал поток, все, кажется, работает, но массаж не включается jTextField
. Я сделал поток, как на сервере, я сделал в том же файле, но не работает:
class bacgroundTask extends Thread{
static String msg;
static JTextArea jta;
static DataInputStream in;
public void run(){
while(true){
try{
msg = in.readUTF();
jta.append(msg + "\n");
}
catch(IOException ioe){}}}}
//
Привет, это снова я, я пытаюсь использовать метод invokelater, но фрейм останавливается, когда выполняется, я не могу нажать кнопку отправки или ввести текст в jtextfield
. Может ли какой-нибудь орган объяснить мне немного больше об этих методах, и они правы в моем случае.
Я пытался с и без stetment.
SwingUtilities.invokeLater(
new Runnable(){
public void run(){
while(true){
try{
msg = in.readUTF();
jta.append(msg + "\n");
jta.revalidate();
}
catch(IOException ioe){
}}}});