채팅 룸을 사용하고 있습니다. Netbeans로 만든 jFrame이 하나 있지만 문제가 하나 있습니다. 나는 2 개의 중요한 과목을 가지고있다. 그 중 하나는 인터페이스 자체입니다. 또 하나는 새로운 메시지를 ckecks하는 run 메소드가있는 자바 클래스이다. 이 run 메서드를 실행할 스레드를 시작합니다. 메시지를 읽을 때마다 인터페이스 보내기 메소드를 사용하려고합니다. 이 메소드는 JEditorPane에 메세지를 추가합니다. 하지만 추가하지는 않습니다. 나는 메시지를 받았지만 jeditorpane에 나타나지 않습니다 ... 도와 주시겠습니까?다른 클래스의 사용자 jEditorPane에 액세스 할 수 없습니다.
이 방법은 ClientForm1 (인터페이스)에 있습니다. 편집기 창에 텍스트를 추가합니다. 여기 들어오는 메시지를 확인하기위한 스레드를 시작합니다.
public void send(String message){
String messages;
messages = jEditorPane1.getText();
jEditorPane1.setText(messages+message+"\n");
}
그리고 이것은 서버에서 들어오는 메시지를 확인하기위한 실행 방법입니다. 모든 JFrame 변수는 private입니다.
public ResMesClient(Socket socket, BufferedReader br, PrintStream p){
this.socket = socket;
is=br;
ps = p;
}
@Override
@SuppressWarnings("empty-statement")
public void run(){
String messages;
try {
//This thread will read the server messages
ClientForm1 cf = new ClientForm1(socket,ps); //I create an object
JFrame frame1 = cf; //I create a frame and set it visible.
frame1.setVisible(true);
while(true){
messages = is.readLine();
System.out.println("From ResMesClient : "+messages);
if(!messages.equals("QUITCLIENT"));
else cf.send("Set text works"); //I call a send method of ClientForm1 class
}
} catch (IOException ex) {
}
이 두 파일은 서로 다른 두 개의 Java 클래스입니다. 하지만 추가하지 않았습니다 ... 많은 일을 시도했지만 작동하지 않습니다 ... 적어도 메시지를 받았다는 것을 확실히 말할 수 있습니다.
미리 감사드립니다.
참고로 완전한 작동 예제가 [here] (http://stackoverflow.com/a/3245805/230513)에 나와 있습니다. – trashgod
방금 전체 코드를 보았는데 문제는 소켓과 서버 소켓 개념이라고 생각합니다. 원한다면 일요일까지 간단한 예제를 제공 할 수 있습니다. 또한 Java Net API 및 소켓 프로그래밍을 살펴보십시오. – Diversity