스윙과제 두번째( 완패)
포스트 잇을 구현한다
핵심은 마우스 액션 모션 리스너들을 임포트해야하는것이다.
MouseListener / MouseMotionListener / MouseEvent 를 쓴다. 앞의 두개는 인터페이스들이며, 메소드들을 구현해줄 필요가 생긴다.
모션리스너는 제한적인 기능을 수행한다. Dragged 와 Moved가 있다.
두놈들은 서로 완전히 분리된 녀석들이다. 그래서 한 인터에 묶어줄 수 있었던 것 같다.
마우스리스너는 Clicked Pressed Released Entered Exited
가 있는데 딱봐도 Dragged 와 Click Press 는 동시에 일할 여지가 있어 보인다. enter exit도 move와 동시에 일어날것처럼 보인다. 충돌되는 메소드들이 한 집단에 있어선 안되는 것이 상식적이긴 하다.
과제를 하기위한 재료들을 모두 모아본다.
JPanel JFrame
JTextArea
JScrollPane
boolean
setBounds/ setVisible/ setLayout/ setBackground / Color. xxxx/ setOpaque / add/ addMouseListener
/addMouseMotionListnener/ Inner Class/ e.getX / e.getY / getText.
repaint() // remove and repaint // repaint 대상은? 바로 패널.
종이 위가 아닌곳에서 마우스 프레스가 되는 순간 드래그는 작동 말아야하며,
종이 위에서 마우스 프레스 되면 드래그는 작동하면서 dragged 를 따라서 객체는 이동한다. 종이가 이동한다.
// 필수사항 = 2개 클래스 열고 리스너, 모션리스너를 구현해준다.
implement 쓰고 멋지게 ALt S V Enter 누르면서 메소드들이 빠르게 등장하게 해주는 것이 이과제의 하이라이트다.
text생기게 하는 방식은 여러가지가 있다.
1. 클래스 생성시 생겨나게한다. // add 텍스트, 라벨 순으로 해서
라벨이 드러나게 한다?
add T , L 이면 T가 위로나오고
add L T 이면 분홍바탕이 위로 올라온다.
먼저 add하면 같은 바운드에 올려도 먼저 add한놈이 승자다.
그런데 함정이 있다. 분홍으로 감춘줄 알았는데 감춰진 것이 아니라는 걸 볼수 있었다.
그래서 text컴포넌트만 싹 감춰주는 방식을 쓴다. // 그러면 분홍이만 나온다.
// 이제 마우스를 오픈해준다.
텍스트로 바꾸는것이 되지 않는다.
텍스트로 복귀시키는 것.
결론은 망했다.
텍스트가 한번은 잘 활성화되지만 다시 누를때 분홍이가 뜨면서
완전히 막혀버린다.
잠깐의 visible 로 는 한계가 있는것같다.
아침이되어도~~
원인을 모르겠고
해결방법을 모르겠다.
ㅎㅎ쉽지않다.
겸손하게 많이 배워야겠다.