소켓을 사용하여 Java 용 채팅을 만들고 있습니다. 내 문제는 사용자를위한 프레임에 처음으로 입력 할 때 캐럿이 다음 줄로 가고 그 뒤에는 백 스페이스 키를 눌러야한다는 것입니다. 그렇지 않으면 빈 문장이 내가 작성한 문장과 함께 전송되기 때문입니다. 나는 Enter 키를 누르기 위해 KeyListener를 사용하고 keyPressed 함수에 다음 코드를 입력했다.누른 후 JTextArea 입력하십시오.
if(arg0.getKeyCode()==10)
{
System.out.println("Bika sto enter\n");
String toserver = ClientText.text2.getText();
try {
if(toserver.equals("close it")) {
ClientText.clientSocket.close();
}
ClientText.text2.moveCaretPosition(ClientText.text2.getSelectionStart());
ClientText.text2.setCaretPosition(0);
ClientText.text2.setText("");
ClientText.outToServer.writeBytes(toserver+'\n');
//ClientText.outToServer.writeUTF(toserver+'\n');
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
처음으로 채팅을 사용한 후에 만 작동한다는 것이 있습니다. 예를 들어 뭔가를 보내면 Enter 키를 누르면 캐럿이 다음 행으로 넘어갑니다. 그런 다음 무언가를 쓰고 Enter 키를 누르면 캐럿이 두 번째 줄이 시작됩니다. 따라서 빈 줄을 하나씩 지울 때마다 지울 필요가 있습니까? 감사합니다
http://stackoverflow.com/a/2162974/1428683 약간의 연구 끝에 실제로이 게시물의 답변을 발견했습니다. – MikEKOU
그 대답의 관련 부분을 게시하고 자신의 답변을 제공하고 올바른 표시를하면 나중에 방문하는 사람들에게 도움이 될 것입니다. (이 답변에서 그런 링크를 삭제하지 마십시오. 이 링크는이 페이지의 오른쪽에있는 __Linked__ Category 아래에서 활성 상태로 유지됩니다.) 다른 당신은 내 생각에 지금은 좋은 일이 아닌이 게시물을 삭제할 수 있습니다 :-) –
나는 또한 어떤 종류의 채팅 프로토콜을 보길 제안합니다. 이것을 시도하십시오 http://tools.ietf.org/ html/rfc1459.html – Gianmarco