순서
1. Image Icon을 만든다.
2. DefaultListModel 객체를 만든다.
3. DefaultListModel에 만든 Image Icon을 addElement()한다.
4. JList에 만든 Model을 setModel() 해준다.
응용(ImageIcon이 너무 커서 JList에 제대로 표시되지 않는다면?)
5. Image로 선언하여 사이즈 변환 후 ImageIcon으로 캐스팅한다.
6. CellListRenderer 클래스를 만들어 재정의 해준다.
7. CellListRenderer 클래스를 호출한다.
8. 본인이 원하는 컴포넌트(JLabel, Jpane 등)를 선언하여 ImageIcon을 셋팅한다.
위 단계를 거치면 리스트의 각 셀이 이미지에 딱 맞춰진다.
//리스트 모델 선언
DefaultListModel skinModel = new DefaultListModel();
// 이미지 리사이징
Image img = new ImageIcon(getClass().getResource("../images/back.jpg")).getImage();
Image imgResize = img.getScaledInstance(100, 100, java.awt.Image.SCALE_SMOOTH);
//리스트 모델에 이미지 삽입
skinModel.addElement(new ImageIcon(imgResize, "back.jpg"));
// 리스트 선언
JList skinJList = new JList();
// 리스트에 모델 셋팅
skinJList.setModel(skinModel);
// 이미지 크기에 따른 셀 크기 조절 클래스
skinJList.setCellRenderer(new CustomListRenderer());
public class CustomListRenderer implements ListCellRenderer {
@Override
public Component getListCellRendererComponent(JList list, Object value, int index,
boolean isSelected, boolean cellHasFocus) {
JLabel skinLabel = new JLabel();
//라벨 이미지아이콘 셋팅
skinLabel.setIcon((ImageIcon) value);
skinLabel.setText("back.jpg");
//라벨 텍스트 색상 조정
skinLabel.setForeground(new Color(255,0,1));
//라벨 텍스트 하단으로 위치 조정
skinLabel.setHorizontalTextPosition(JLabel.CENTER);
skinLabel.setVerticalTextPosition(JLabel.BOTTOM);
//만든 이미지라벨 반환
return skinLabel;
}
}
'Back > JAVA' 카테고리의 다른 글
JLabel에 ImageIcon을 설정했을 때 텍스트 정렬 (0) | 2021.04.01 |
---|---|
[심화예제] Java Gui와 Event를 이용하여 커피자판기 만들기 (0) | 2021.03.24 |
프로세스(Process)와 스레드(Thread) (0) | 2021.03.24 |
[심화예제] Java Gui와 Event를 이용하여 회원가입 프로그램 만들기 (0) | 2021.03.23 |
Java GUI(AWT, Swing) - Event (0) | 2021.03.22 |