JList 와 Render 그리고 프레임에서 메시지 처리하기
민G
프로그램 제작중에 문제에 막혀 버렸습니다. ㅠㅠ;
어지간한건 문서보면서 찾을 수 있었는데 이건 영 어렵네요..
JFrame에 JSplitPane을 하나 붙이고 RightComponent에 또하나의 JSplitPane을 붙였습니다.
3개의 프레임을 만든거죠. 모양이 이렇습니다.
↓ leftComponent
-------------------
| || |
|left |cent | right |
| || |
-------------------
|----↑-----| rightComponent그리고 LeftComponent에는 JScrollPane위에 JList를 붙였습니다.
JList는 ListCellRenderer를 사용해서 제가 원하는 컴포넌트 들을 집어 넣었습니다.
문제는 왼쪽의 List를 클릭 했을때 cent부분에 데이터가 나와야 한다는 겁니다.
파워포인트의 슬라이드 보기 기능과 유사하다고 생각하시면 될겁니다.
왼쪽 작은 슬라이드를 클릭하면 오른쪽에 큰 화면으로 보여지는 방식 입니다.
어떤식으로 처리를 해야 cent 부분에 데이터를 보여줄 수 있을까요?
보통 예제들은 getListCellRendererComponent에서 선택된 셀정보를 가지고 내부에서 다 처리해
버리더라구요.. 이처럼 상위에 있는 다른 프레임에 대한 처리는 어디서 어떻게 하면 될지 조언 부탁
드립니다. getListCellRendererComponent 밖에서 처리하는 방법을 알고 싶습니다. 요 메소드는
List에 관련된 화면이 그려져야할 때마다 호출되는 놈으로 알고 있습니다. getParent()와도 싸움중
입니다. 도움 부탁 드립니다.
-
패틱 2024-07-03
일단은 getListCellRenderComponent내에서 isSelected가 true일때 getTopLevelAncestor()를 호출해서 제가 만든프레임의 객체로 접근이 가능했습니다. 거기서 부터 제가 그리고자 하는 패널까지 타고 내려가면 되더군요
(MyFrame)getTopLevelAncestor();
getParent()를 사용하게 되면 프레임 상위로 올라가기위한 단계가 너무많아
지게 되더라구요.. 약간이나마 해결이 되었습니다. -
유진공주 2024-07-03
MouseListener 를 리스트에 등록하시면 clicked 이벤트가 발생하는것을 잡아 낼 수 있을겁니다 ^_^, 그러고 난 뒤에 rightComponent를 얻고 다시 leftComponent를 잡아 내서 뿌려주면 되지 않을까 합니다. ^_^ 제가 문제를 잘못 이해 했다면 낭패 -_-/~