간단한 채팅 GUI를 만들고 서버와 GUI 클라이언트를 모두 작성했으며 클라이언트 GUI에서 서버로 메시지를 보낼 수 있습니다.두 가지 이벤트 처리 방법
내 문제는 프레임의 서버에서 메시지를받는 것입니다. 무한 루프를 사용하면 프레임이 잠 깁니다. JTextArea
에 메시지를 표시하기 위해 어떻게 분할해야하는지 모르겠습니다. 내 질문 : 서버에서 '보내기'및 '수신'정보를 처리하기 위해 프레임을 분할하는 방법이 있습니까?
내 GUI는 JTextField
, JTextArea
및 JButton
으로 구성됩니다.
눌러 JButton
JTextField
에서 텍스트에 의해 서버로 전송되는 경우 :
String u = jTextField.getText();
out.writeUTF(u);
하지만 내가 JTextArea
얻을에 의해 정보를 주셔서 모든 시간을 줄이기 위해 무엇을해야하는지 모르겠어요
msg = in.readUTF();
jta.append(msg + "\n");
스레드는 GUI 클래스의 클래스 또는 구성 요소를이어야한다 일하고 있지만 마사지는 jTextField
에 apear 없습니다. 나는 서버에 내가 같은 파일에했던 것처럼 스레드를했지만 작동하지 않습니다 :
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 방법하지만 프레임 frezze를 사용하려고 클릭 전송 버튼을 클릭하거나 jtextfield
에 텍스트를 입력하십시오. 어떤 몸이라도 그 방법에 대해 좀 더 설명 할 수 있었고 내 경우에는 그럴 수 있습니다.
나는 stetment를 사용하는 동안 또는 사용하지 않고 시도했습니다.
SwingUtilities.invokeLater(
new Runnable(){
public void run(){
while(true){
try{
msg = in.readUTF();
jta.append(msg + "\n");
jta.revalidate();
}
catch(IOException ioe){
}}}});