안녕하세요.





'슬라삐'라고 적힌 버튼 위에 파란색 슬라임 그림을 넣어보도록 하겠습니다.


우선 코드부터 보시죠.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
        // 버튼이 눌렸을때
        btn1.addActionListener(event -> {
            lbl.setText("나는 슬라삐");
        });
 
        btn2.addActionListener(event -> {
            lbl.setText("나는 슬라디");
        });
 
        // ★ 라벨 생성
        JLabel imgLbl = new JLabel();
        
        // ★ 라벨에 넣을 아이콘 생성
        ImageIcon bsImg = new ImageIcon(Study01.class.getResource("/study/img/slime(blue).png"));
        
        // ★ 라벨에 아이콘 설정
        imgLbl.setIcon(bsImg);
        
        // ★ 기타 설정
        imgLbl.setBounds(3030122130);
        imgLbl.setHorizontalAlignment(JLabel.CENTER);
        frm.getContentPane().add(imgLbl);
 
        // 프레임이 보이도록 설정
        frm.setVisible(true);
cs

- 11행 : 그림은 따로 컴포넌트(버튼, 라벨 등을 컴포넌트라고 합니다)가 있는 것이 아니라 라벨 앞에 붙이는 아이콘을 사용합니다. 그래서 이미지용 라벨 객체를 생성한 겁니다. 객체를 나타내는 변수 이름은 이미지 라벨을 줄여서 imgLbl이라고 했는데요, L이 대문자인 이유는 다음과 같습니다. 변수 이름이든 함수 이름이든 중간에 띄어쓰기가 들어가면 안됩니다. 그렇다고 imglbl 이런 식으로 하면 가독성이 떨어지죠. 그래서 img_lbl 이렇게 중간에 밑줄을 적는 방식이 있고 두번째 단어 첫글자를 대문자로 적는 방식이 있습니다.

- 14행 : 라벨에 붙일 아이콘 객체입니다. 이미지 아이콘 클래스를 사용합니다. 생성자 인수가 제법 복잡해보이는데요,
(현재 클래스명.class.getResource("/패키지명/그림폴더명/그림파일명"));
이렇게 되어있는 구조입니다. 그림파일명은 png라는 확장자까지 적어주시길 바랍니다.


이미지 라벨에다가 아무런 글자도 세팅하지 않았으므로 아이콘(이미지)만 표시하게 됩니다. 20행을 잘 이해하셔야 되는데요, 이 구문은 라벨에 대한 것이기 때문에 가로길이나 세로길이를 변경해도 속에 있는 아이콘(이미지)의 크기는 변하지 않습니다. 아이콘의 크기를 변경시키는 방법이 있긴 있지만 코드가 제법 복잡해지기 때문에 알씨 같은 프로그램을 사용해서 그림 크기를 미리 바꿔놓는 것이 좋습니다.



그림이 잘 뜨나요? ㅎㅎ 


이번엔 슬라디 버튼 위에도 파란색 슬라임 그림을 넣어보시길 바랍니다.





이렇게 말이죠^^ 해답은 다음 강의에서 공개하겠습니다 ㅎㅎ

감사합니다.


+ Recent posts