ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • ProgressMonitor 사용하기
    개발 2007. 7. 31. 13:18
    ProgressMonitor 는 진행상태를 보여주기위한 ProgressBar 를 사용하기 쉽게 해주는 클래스다.
    그렇기 때문에 파일전송시 전송상태를 보여주기도 하는데 파일을 보내거나 받을때 처음에는 문제가 있다.
    상태바가 처음에는 보이지 않는 것이다.

    예를 들어 다음과 같은 경우다.
    밑의 소스는 파일을 상대에게 보내는 경우의 일부분이다.

                // 파일을 열고 사이즈를 구한다음 소켓을 생성한다.
                fis = new FileInputStream(filepath);
                size = fis.getChannel().size();
               
                socket = new Socket(host, port);
                in = new DataInputStream(socket.getInputStream());
                out = new DataOutputStream(socket.getOutputStream());
               
                // 상대에게 파일을 받을 준비를 하게 한다.(파일수신여부의 메세지를 띄움)
                int res = sendString(out, "C_RECVFILE "+userId + " "+size+" "+filename+"\n");
               
                if(res < 0)
                    return;
               
                i
    public void setProgress(int nv) {
            // 보낸사이즈가 최대값과 동일하거나 크면 현재 창을 닫는다.
            // 전송중에 취소를 눌렀을 경우 임의로 닫아줘야했지만, 파일전송이 완료되면 자동으로 닫히므로
            // 파일전송이 끝났다고 해서 다시 닫아줄 필요는 없다.
            if (nv >= max) {
                close();
            }
            else {
                // 바로 여기가 문제!!!
                // myBar가 null 이 아닌경우 value를 갱신해주지만 처음 실행시에는 myBar 가 null 이기 때문에
                // value 가 갱신되지 않는다.
                if (myBar != null) {
       
    ProgressMonitor monitor = new ProgressMonitor(mainFrame, filename.substring(end+1), "", 0, (int)size);
    monitor.setMillisToDecideToPopup(0);
    monitor.setMillisToPopup(0);
    monitor.setProgress(0);


    그러면 처음실행시부터 진행상태가 0인 상태바를 볼 수 있을 것이다.

    반응형

    댓글

Designed by Tistory.