JPanel
JPanel은 JFrame에 붙이는 중간역할을 한다. (요소를 갖고있는 보관함같은 역할?)
화면이 복잡한 형태인 경우 요소를 그룹별로 묶어서 표현할 수 있는데 이러한 경우 JPanel에 묶어서 Frame에 붙일 수 있다.
배치관리자 (배치를 도와주는 클래스)
FlowLayout : 왼쪽에서 오른쪽으로 배치, 오른쪽에 공간이 없으면 아래로 배치
BorderLayout : 동,서,남,북,중앙 5개의 영역으로 나눠서 배치
GridLayout : 2차원 표 모양으로 n x n 으로 설정해주며 왼쪽에서 오른쪽, 위에서 아래 순으로 배치
CardLayout : 컴포넌트(버튼 등 요소)를 포개어 배치
Null : 레이아웃을 쓰지 않고 각 컴포넌트마다 수동으로 위치 설정
버튼만들기(FlowLayout, GridLayout) _ 버튼을 패널에 붙이고 프레임에 붙이기
FlowLayout 과 GridLayout 모두 for문을 이용해서 버튼을 패널에 붙이기가 가능하다.
버튼만들기(BorderLayout) _ 버튼을 패널에 붙이고 프레임에 붙이기
BorderLayout의 경우 영역을 직접 지정해줘야하므로 위의 FlowLayout 과 GridLayout처럼 for문으로 작성이 어렵다.
버튼만들기(CardLayout) _ 버튼을 패널에 붙이고 프레임에 붙이기
마우스 행동과 관련된 리스너 : MouseListener
공통감지자를 사용한다.
위에서는 MouseListener 인터페이스의 mouseClicked 메서드를 오버라이딩하여 if문을 썼다. (다른 이벤트리스너도 공통감지자 가능)
card1,2,3이라는 카드패널에 마우스(이벤트)리스너를 추가하고 마우스 클릭에 따라 동작을 수행한다.
card1,2,3 컴포넌트에 MouseListener를 추가하고 mouseClicked메서드를 오버라이드한다.
e.getModifiersEx() : 현재 마우스 이벤트의 수정자
e.getModifiersEx() == InputEvent.BUTTON3_MASK : 마우스 우클릭 이벤트를 확인하는 조건으로 마우스 우클릭의 경우 previous 메서드를 호출하여 이전 카드로 이동하고 그렇지 않은 좌클릭 이벤트인 경우 next 메서드를 호출하여 다음카드로 이동한다.
CardLayout을 사용하면 여러 패널,카드를 전환하거나 이미지 갤러리와 같은 사용자 인터페이스에서 좌우 슬라이드 기능을 구현할 때 유용하게 사용할 수 있다.
결과
'JAVA' 카테고리의 다른 글
[JAVA] GUI 활용_Item(JCheckBox, JRadioButton), ItemEvent (0) | 2023.09.10 |
---|---|
[JAVA] GUI 활용_JLabel, JText (0) | 2023.09.10 |
[JAVA] GUI 활용_JFrame, JButton (0) | 2023.09.10 |
[JAVA] 보조스트림 (0) | 2023.09.08 |
[JAVA] 자바 입출력과 스트림 (0) | 2023.09.07 |