국비지원학원/Java

39일차

초코맛 2018. 12. 19. 00:43
반응형
*이벤트 처리
  • <껍데기안에 내용물을 채운다.
  • 방법)
    • is a : 디자인과 이벤트 처리를 한번에 할 수 있다. myclass가 디자인인지 이벤트인지 약간 얘매해진다. 부모가.
    • has a : 디자인과 이벤트클래스를 나누어 부모가 뚜렷하고, 하는일이 명확하다.
    • inner class
    • anonymous innerclass
  • <KeyAdapter를 또 받아(상속해) 올 수 없기 때문에 has a, is a, 등등으로 받아온다.
  • 키보드 이벤트 등록
    • tf.addKeyListener(this)
  • 키보드의 눌린 키코드
    • getKeyCode()
  • 눌린키의 문자
    • getKeyChar()
keyPressed : 눌렸는지
keyTyped : 부터 키의정보를 얻을수 있다.
keyReleased : 키보드가 올라오는순간. 눌린키의 정보를 얻을수 있다.

*이벤트 비교
  • <버튼두개가 있을때, 다른일을 하고싶어도 둘다 actionPerformed(ActionEvent ae)로 들어가기때문에 같은일을 할 수 밖에 없다.
  • <하나는 넣어주고 하나는 inner로 해주어도 되지만 올바른답은 아니고, 
  • 같은종류의 이벤트가 여러개 발생했을 때, 구분하여 처리하는것.
 
해보다가 말음(라벨을 가져온줄 알았는데..?비교가 안돼더라...Command가 라벨

  • 주소를 가지고 비교하는 방법
    •  발생객체의 주소로 비교하는 방법 (모든이벤트의 부모<다 쓸수 있다.) , <Action이벤트만 label로 비교하는 기능이 추가됨.
      • getSource()=>반환형 Object(<<모든 이벤트 처리 클래스>>)(이벤트를 발생시킨 객체=this) 
      • ex) tf.getSource() 면 tf, list.get~면 list
      • <어떤 객체든 다 비교할수 있다.
      • 모든 이벤트 객체를 다 비교할 수 있다.
  • 라벨을 가지고 비교하는 방법
    • 발생객체의 Label로 비교(ActionEvent만 가능)
      • Button의 라벨은 "확인", "취소"같은...new Button("XXXX")=>XXXX부분. Label도, TextField도 라벨이라고 함.
      • getActionCommand()=>반환형 String
//이벤트 발생.
b.addActionListener(this)
b1.addActionListener(this)

//Override
public void cationPerformed(ActionEvent ae){
        //주소로 비교(if는 다 비교가능) <훨씬 더 많이 사용
        if(ae.getSource==b/*이벤트를 발생한 객체와 비교할 객체*/){    //<모두다 쓸수있어서EventObject에 있나?
        //이벤트가 처음 발생한 개체를 받아오는것, 반환형은 Object이다.
            
        }
        if(ae.getSource()==b1){
            //else if 잘쓰지 않는데, 단일if는 딱하나의 조건만 있는반면, 연관이 없는 버튼이니까 각각이기 때문에 단일if를 쓴다.
            
        }
        //Label비교(ActionEvent 만 가능한것)    <ActionEvent만 가능해서 API ActionEvent Class에 있나?
        if(ae.getActionCommand().equals("비교할 Label")){    //String은 이글자로 끝나는지, 시작되는지, 포함되는지 로 물어볼수도있다.
    
        }
}
*파일 Dialog
  • 파일을 열거나 저장하기 위해서 제공하는 창.
  • OS에서 제공하는 FileDialog를 사용하는것   (<OS에 푹)
  • Window Component     (<하는일: 사용자에게 보여주는일)
  • =>사용자에게 보여주기위해서 setVisible사용.
  • 사용법)
  • 1.생성
    • FileDialog fd = new FileDialog(this,"title",mode/*FileDialog.LOAD=열기모드, FileDialog.SAVE=저장모드*/)  //<모달로열린다(부모창이 조작되지 않는다.)
    • <Dialog : 정보를 제공하는 자식창. Dialog는 부모가 필요하다.
  • 2.가시화
    • fd.setVisible(true);
  • 선택한 파일에 경로를 얻을때(폴더명) : fd.getDirectory();      =>반환형 String
  • 선택한 파일의 파일명 : fd.getFiles();   => 반환형 String 

 

*메모장*   <<<앞으로 배울때마다 기능 추가>>>>
기능 분석)
새글)
T.A가 빈상태라면 그냥 초기화 한다.
T.A가 내용을 가지고 있다면 작성한것인지 판단. Y->새이름으로=>새글 / N->읽어들인것인가?(Y->수정x(Y->새글/N->저장할 것인가(Y->기존의 파일에 덮어쓰고 새글/N->새글)
열기)
T.A가 빈 상태 (Y->열기=>파일열어서 T.A 추가(기존의 내용을 지우고))/ N->새로작성한것인가(Y=>저장(새이름으로)=>파일을 열어 T.A초기화후에 추가/N=>읽어 들인것인가?(Y->읽어들인 내용이 변한것이 없는가 (Y=>파일열어T.A에 추가/N->기존에 열었던걸 저장하고 T.A추가)/N->파일열어서 T.A에 추가)
저장)
T.A가 빈상태인가
    Y=>새이름으로 저장
    N=>새로 작성한것인가=>Y=>새이름으로 저장
                                    N=>읽어들인 것인가=>Y=>기존의 이름으로 저장
                                                                   N =>새이름으로 저장
새이름으로 저장)
무조건 새이름으로 저장.
닫기)
T.A안의 내용이 비었는가 Y=>종료
                                N=>있다면 읽어들인것인가? Y=>내용이 변했는가? Y=>저장할 것인가 Y=>저장후종료
                                                                                                                          N=>그냥 종료
                                                                                                 N=>그냥 종료
                                                               
Font)
Dialog를 띄워서 Font,Style,Size를 변경한 후 "적용"을 클릭하면 부모창의 T.A를 변경.

메모장 정보)
Dialog를 띄워서 정보를 보여준뒤 "확인" 버튼을 누르면 정보창이 닫힌다.

 

 

 

<<<<숙제>>>>>>

이름나이주소 를 받고(라벨과  T.F)로 list 에 받은값 넣는다.

추가삭제변경닫기 버튼을 넣고

추가가눌리면 list에 추가하고 t.f초기화

아이템을 클릭하면 선택한값이 입력되고

변경이눌리면 아이템이 선택되었는지 확인후 해당값을 수정

삭제가 눌리면 아이템이 선택되었는지 확인후 일치하는 아이템을 삭제

닫기가 눌리면 프로그램을 종료한다.

 

 

 

반응형

'국비지원학원 > Java' 카테고리의 다른 글

41일차  (0) 2018.12.20
40일차  (0) 2018.12.19
38일차  (0) 2018.12.18
37일차  (0) 2018.12.18
36일차  (0) 2018.12.10