회사에서 자바 프로젝트로 채팅 프로그램을 만들었다.
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 : 친구 버튼 파일
- 참고
macOS mysql 설치 & eclipse java 연동 : https://song-yujin.tistory.com/5?category=815435
-> 윈도우 환경에서도 비슷하다!
github : github.com/YuJinSong412/KEVotingTalk
ScreenShot
'IT > JAVA' 카테고리의 다른 글
[JUnit ] JUnit5 단위 테스트 해보기 (0) | 2020.12.21 |
---|---|
다른 프로젝트에 있는 클래스 import 하기 (0) | 2020.12.17 |
[경고 메시지] The serializable class MainFrame does not declare a static final serialVersionUID field of type long 원인 & 해결 (0) | 2020.10.10 |
macOS mysql 설치 & eclipse java 연동 (4) | 2020.10.09 |