로그인을 하면 이러한 대기화면이 나온다.

오른쪽에는 참여자가 실시간으로 올라오며 , 위에 메뉴바도 존재한다. 

메뉴바에는 파일로 저장하는 것과 회원 정보 수정 및 탈퇴버튼이 있고, 해당 프로그램의 정보가 있는 도움말이 있다.

방을 만들어 따로 채팅이 가능하며, 대기실에서 바로 채팅이 가능하다. 또한 참여자를 선택후 귓속말을 클릭하면 태그가 되어 

그사람 한테만 나의 글이 보여진다.

이러한 이화면의 모든 기능들을 담은 소스가 WaitRoomUI.java 이다.


이소스는 이전의 모든 파일에 포함되어 있는 파일이다.

WaitRoomUI.java


버튼의 이벤트가 이부분이다

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
    @Override
    public void actionPerformed(ActionEvent e) {
        id = client.user.getId();
        switch (e.getActionCommand()) {
        case "귓속말":
            // 닉네임 제외하고 아이디만 따옴
            StringTokenizer token = new StringTokenizer(currentSelectedTreeNode, "("); // 토큰 생성
            temp = token.nextToken(); // 토큰으로 분리된 스트링
            temp = token.nextToken();
            id = "/" + temp.substring(0, temp.length() - 1+ " ";
            chatField.setText(id);
            chatField.requestFocus();
            break;
        // 메뉴1 파일 메뉴
        case "회원정보 변경":
            DBRevise reDB = new DBRevise();
            reDB.myInfo(id);
            break;
        case "회원 탈퇴":
            DBDelete delDB = new DBDelete();
 
            int ans = JOptionPane.showConfirmDialog(this"정말 탈퇴 하시겠습니까?""탈퇴확인", JOptionPane.OK_CANCEL_OPTION);
 
            if (ans == 0) {
                int i = 0;
                i = delDB.InfoDel(id);
                if (i == 0) {
                    // msgbox.messageBox(this, "탈퇴는 신중히..:)");
                } else {
                    msgbox.messageBox(this"탈퇴 성공하였습니다..:(");
                    exit01();
                }
            }
            break;
        case "종료":
            int ans1 = JOptionPane.showConfirmDialog(this"정말 종료 하시겠습니까?""종료확인", JOptionPane.OK_CANCEL_OPTION);
            if (ans1 == 0) {
                // System.exit(0); // 강제 종료
                try {
                    client.getUser().getDos().writeUTF(User.LOGOUT);
                } catch (IOException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
            }
            break;
        case "파일로저장":
            String filename = UtilFileIO.saveFile(waitRoomArea);
            JOptionPane.showMessageDialog(waitRoomArea.getParent(), "채팅내용을 파일명(" + filename + ")으로 저장하였습니다""채팅백업", JOptionPane.INFORMATION_MESSAGE);
            break;
        case "파일열기":
            filename = UtilFileIO.getFilenameFromFileOpenDialog("./");
            if (filename == ""break;
            String text = UtilFileIO.loadFile(filename);
            TextViewUI textview = new TextViewUI(text);
            break;
        case "프로그램 정보":
            maker();
            break;
        }
    }



cs


메시지 전송되는 소스이다

전체 채팅, 귓속말 채팅

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
    private void msgSummit() {
        String string = chatField.getText();// 메시지전송
        if (!string.equals("")) {
            if (string.substring(01).equals("/")) {
                
                StringTokenizer token = new StringTokenizer(string, " "); // 토큰 생성
                String id = token.nextToken(); // 토큰으로 분리된 스트링
                String msg = token.nextToken();
                
                try {
                    client.getDos().writeUTF(User.WHISPER + id + "/" + msg);
                    waitRoomArea.append(id + "님에게 귓속말 : " + msg + "\n");
                } catch (IOException e) {
                    e.printStackTrace();
                }
                chatField.setText("");
            } else {
 
                try {
                    // 대기실에 메시지 보냄
                    client.getDos().writeUTF(User.ECHO01 + "/" + string);
                } catch (IOException e) {
                    e.printStackTrace();
                }
                chatField.setText("");
            }
        }
    }
cs


채팅방을 생성할 시 채팅방의 이름을 작성할 수있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    private void createRoom() {
        String roomname = JOptionPane.showInputDialog("대화방 이름을 입력하세요~");////////////
        if(roomname==null) {    // 취소 버튼
            
        } else {
            Room newRoom = new Room(roomname);    // 방 객체 생성
            newRoom.setRoomNum(lastRoomNum);
            newRoom.setrUI(new RoomUI(client, newRoom));
            
            // 클라이언트가 접속한 방 목록에 추가
            client.getUser().getRoomArray().add(newRoom);
            
            try {
                client.getDos().writeUTF(User.CREATE_ROOM + "/" + newRoom.toProtocol());
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
cs


JOptionPane 을 사용하면 좀더 편리하게 알림창을 사용할 수있다.

'* Project > Chatting_Pro' 카테고리의 다른 글

채팅 프로그램 마무리  (0) 2016.09.07
서버  (0) 2016.09.07
회원 수정 DB / 회원 탈퇴 DB  (1) 2016.09.07
로그인 체크 DB  (1) 2016.09.07
회원가입 DB / 메시지박스  (1) 2016.09.07

+ Recent posts