JLabel
: 문자열 및 이미지를 화면에 출력ImageIcon
: 이미지 파일로부터 이미지를 읽음public class TestFrame extends JFrame {
public TestFrame() {
// 라벨 생성
JLabel imgLabel = new JLabel();
// 아이콘 생성
// 생성자 인수 → 현재클래스명.class.getResource("/패키지명/이미지폴더명/이미지파일명")
// ※ 이미지파일명은 반드시 확장자까지 같이 적어줄 것
ImageIcon icon = new ImageIcon(
TestFrame.class.getResource("/test/image/icon.png")
);
// 라벨에 아이콘(이미지) 설정
imgLabel.setIcon(icon);
// 라벨 설정(크기, 정렬...)
imgLabel.setBounds(210, 30, 165, 150);
imgLabel.setHorizontalAlignment(JLabel.CENTER);
//프레임에 컴포넌트 추가
getContentPane().add(imgLabel);
// 프레임 보이기 지정
setVisible(true);
}
}
ImageIcon
객체는 객체의 크기를 직접 조절할 수 없다. 따라서 일련의 과정이 필요하다.
1.
ImageIcon
객체에서 Image 추출
2. 추출된 Image의 크기를 조절하여 새로운Image
객체 생성
3. 새로운 Image 객체로ImageIcon
객체를 생성
public class TestFrame extends JFrame {
public TestFrame() {
ImageIcon icon = new ImageIcon(
TestFrame.class.getResource("/test/image/icon.png")
);
// ImageIcon 객체에서 Image 추출
Image img = icon.getImage();
// 추출된 Image의 크기 조절하여 새로운 Image 객체 생성
Image updateImg = img.getScaledInstance(165, 100, Image.SCALE_SMOOTH);
// 새로운 Image 객체로 ImageIcon 객체 생성
ImageIcon updateIcon = new ImageIcon(updateImg);
JLabel imgLabel = new JLabel(updateIcon);
getContentPane().add(imgLabel);
// 프레임 설정
setTitle("test");
setSize(500, 500);
setVisible(true);
}
}
이미지 파일과 컴포넌트의 크기가 딱 맞으면 좋겠지만, 의도적으로 맞추지 않는 이상 맞기 힘들다는게 현실이지^^..
앞의 두 코드를 잘 엮으면 아래와 같은 코드가 완성된다.
public class TestFrame extends JFrame {
public TestFrame() {
JLabel imgLabel = new JLabel();
ImageIcon icon = new ImageIcon(
TestFrame.class.getResource("/test/image/icon.png")
);
Image img = icon.getImage();
Image updateImg = img.getScaledInstance(165, 100, Image.SCALE_SMOOTH);
ImageIcon updateIcon = new ImageIcon(updateImg);
imgLabel.setIcon(updateIcon);
imgLabel.setBounds(210, 30, 165, 150);
imgLabel.setHorizontalAlignment(JLabel.CENTER);
getContentPane().add(imgLabel);
setVisible(true);
}
}
이미지 관련해서는 당분간은 안 잊어버릴 것 같다.
들락날락 이게 몇 번째야 🤦