회사에서 자바 프로젝트로 채팅 프로그램을 만들었다. 

swing을 이용한 소켓 채팅 프로그램........

처음에 스윙이 뭐지?하면서 코드가 어색했는데 지금은 너무 익숙하다ㅋㅋㅋ 

 

너무 힘들었던 3가지를 기록해야겠따..흑흑

 

1) 채팅할 때 화면에 나오는 나는 오른쪽, 친구는 왼쪽 정렬이 너무 어려웠다.
하아ㅏㅏㅏㅏ 이걸로 거의 일주일은 날린 것 같다.

처음에 JTextArea를 사용했다. 그런데 왼쪽, 오른쪽 정렬이 따로 되지 않는 것과 이미지는 불가능하다는 것.

그래서 구글링하다가 JTextPane을 발견했다. 이것을 사용하면 될 것 같은데 정보가 많이 없었다..ㅠㅅㅠ

일주일동안 삽질하다가 인턴 같이 하는 오빠가 메소드 하나하나씩 분석해가면서 성공시켰다.!!!!!!!!!!!!!!!!!!!!!!

덕분에 잘 적용할 수 있었다. 고마워요...

 

아 지금 이거 적다가 나머지 힘들었던 2가지가 기억나질 않는다. (큰일) 2가지만 적어야지..

 

   

2) 그룹채팅이 아니라 1대 1 채팅 만든 것. 

이것저것 참고해가면서 채팅 프로그램을 만드는데 보통 다 그룹채팅 형식이었다.
(서버쪽에서 연결된 모든 클라이언트를 저장하는데, 메시지를 받고 보낼 때 모든 클라이언트한테 전송함 - 조건을 주지 않으므로 더 간단함.)    
그래서 처음 소켓 통신 성공시키고 대화하는데 웃겼다. 내 아이디로 로그인해서 A친구 채팅방에 글을 쓰고 전송 누르면, A친구한테만 전달되는 것이 아니라 열려 있는 모든 채팅방 친구들한테 다 전달이 된다.ㅋㅋㅋ

하지만 내 채팅은... 카톡처럼 친구 리스트(?)를 누르면 그 친구랑 대화하도록 GUI를 만들어서 그럴 수 없다구,,,  1:1 이어야 한다구....  
결론은 성공시켰지만 생각보다 간단하지 않았다. 채팅창의 정보도 저장하고 있어야하고 보내는 사람, 받는 사람 비교
도 필요하고! 아 그냥 직접 해봐야 알 수 있는 것..

 

 

 

코드 정리를 더 완벽하게 하고 싶은데 여기서 마무리하려고 한다. 

시간을 길게 가진다고 되는 것이 아니라는 걸 너무 느꼈기 때문에...@!@!

나중에 폭풍성장하고 그때 다시 와서 보면 더 완벽하게 할 수 있지 않을까 싶다ㅎㅎㅎ


KEVotingTalk

  • 자바 스윙을 이용한 소켓 채팅 프로그램
  • 사용 기술 : JAVA
  • 설명 : 1 대 1 채팅 KEVotingTalk입니다. GUI를 구현하기 위해 swing을 이용했고 서버와 클라이언트는 소켓 통신을 통해 연결됩니다. 마지막으로 회원관리를 위해 MySQL DB 사용했습니다.
  • github : github.com/YuJinSong412/KEVotingTalk

 

  • 클래스 설명
    • client.datacommunication.ClientSocket.java : 클라이언트 측 송수신 파일
    • client.frame.ChatWindowFrame.java : 채팅 창 파일
    • client.frame.ChatWindowPanel.java : 채팅 화면 파일
    • client.frame.ErrorMessagePanel.java : 에러 화면 파일
    • client.frame.FriendListPanel.java : 친구 목록 화면 파일
    • client.frame.IndexPanel.java : 메인 화면 파일
    • client.frame.JoinMembershipPanel.java : 회원가입 화면 파일
    • client.frame.LoginPanel.java : 로그인 화면 파일
    • client.frame.MainFrame.java : 애플리케이션 창 파일
    • client.frame.MainPanel.java : 애플리케이션 시작 화면 파일
    • client.ClientLaunch.java : 클라이언트 실행 파일
    • controller.Controller.java : java와 DAO 사이의 중간 역할 파일
    • enums.AlignEnum : 채팅창 화면 오른쪽, 왼쪽 정렬 상수 파일
    • enums.CommonWord : 애플리케이션 상수 파일
    • server.datacommunication.Message.java : 메시지 정보 파일
    • server.datacommunication.ServerHandler.java : 서버 측의 송수신 파일
    • server.userdb.User.java : 사용자 정보 파일
    • server.userdb.UserDAO.java : DB의 데이터 접근 파일
    • server.userdb.userDB.sql : MySQL의 쿼리 파일
    • server.ServerLaunch.java : 서버 실행 파일
    • util.ColorSet.java : 애플리케이션 색깔 모음 파일
    • util.CommonPanel.java : 애플리케이션 기본 화면 파일
    • util.JFrameWindowClosingEventHandler.java : 창 닫는 이벤트 파일
    • util.MainPanelButton.java : 애프릴케이션 시작 버튼 파일
    • util.UseImageFile.java : 애플리케이션 이미지 파일
    • util.UserInfoPanel.java : 애플리케이션 이미지 파일
    • util.UserProfileButton.java : 친구 버튼 파일

 


ScreenShot

 

첫 화면

 

 

 

회원가입, 로그인 화면

 

 

 

에러 화면

 

 

 

메인 화면

 

 

 

나와의 채팅

 

 

 

 

이미지 첨부

 

 

1:1 채팅

+ Recent posts