채팅 앱에서 작업하고 있습니다. 이 응용 프로그램에서 사용자가 Enter를 누르면 메시지를 보내는 JTxtField txtMessage
이 있습니다. 같은 것을하는 JButton btn_send
을 추가하고 싶지만, btn_send.addActionListener(enviar_mensaje)
을 추가하면 JTextField
에 Enter를 누를 때까지 메소드가 아무 것도하지 않습니다.Java에서 다른 요소와 동일한 actionListener를 사용하는 방법
동일한 방법으로 JTxtField
과 JButton
을 어떻게 사용할 수 있습니까?
public void write(){
Thread writeThread = new Thread(new Runnable(){
public void run(){
try{
writer = new PrintWriter(socket.getOutputStream(),true);
txtMessage.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
String sendMessage = txtMessage.getText();
writer.println(sendMessage);
txtMessage.setText("");
chatArea.append("Server say: "+sendMessage+"\n");
btnClean.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
chatArea.setText("");
}
});
}
});
}catch(Exception ex){
ex.printStackTrace();
}
}
});
writeThread.start();
}
'actionPerformed'내에 동작 수신기를 추가하고 있습니까? 그 좋지 않다. 스레드 앞에 액션 리스너를 준비하십시오. – user1803551
힌트 : 기본 언어는 ** 영어 **입니다. 이는 코드에서도 마찬가지입니다. 따라서 소스 코드를 직접 붙여 넣는 대신 영어 용어를 사용하는 최소한의 실행 가능한 예제를 만드는 것이 좋습니다. 좋은 답변을 많이받는 데 도움이됩니다. 그리고 : under_bares는 Java 이름을 사용하지 않으므로 ** SOME_CONSTANT 내에서만 ** 사용하십시오. – GhostCat
@ user1803551 변경 사항을 알려 드리겠습니다. –