나름 괜찮나요? 만약 이름이나 비밀번호 등 * 표시 된것들 중에서 하나 빼고 확인 누르거나 취소 버튼 눌러보거나 하는 액션을 취해주시면 흥미로운 결과도 발견됩니다. 확인해 보시고 이상이 있거나, 지적할 사항, 보충해야 되는 부분들 확인해 주시면 감사하겠습니다 ㅎㅎ
아직 데이터베이스를 구축하지 않아 저장은 되지 않네요 ㅎㅎ 앞으로 데이터베이스를 빨리 익혀서 회원 정보를 구축하는 법도 익혀야겠어요! 그러면 하나의 웹 페이지를 제작할 수 있는 능력이 생기겠죠?? 얼른 제대로 된 웹개발자가 되어야 겠습니다! 그 전까지 같이 공부하고 응원합시다!
최근에는 너무 SDN만 건드린거 같아요! 이제 자바와 HTML도 다시 업데이트 해야 겠습니다! (아무래도 SDN이 프로젝트이다 보니 힘들긴 합니다..)
그럼 바로 본론으로 넘어갈게요!
.
이번 포스팅에서는 자바 Swing에서 지원해주는 JComboBox와 ImageIcon을 활용해서 원하는 이미지를 불러오고자 합니다! 코드는 주석을 합쳐도 100줄이 안넘어가니 부담없이 봅시다!
<소스 코드>
import java.awt.*; // java.awt의 모든 라이브러리 클래스들을 제공받습니다.
import java.awt.event.*; // java.awt.event의 모든 라이브러리 클래스들을 제공받습니다.
import javax.swing.*; // javax.swing의 모든 라이브러리 클래스들을 제공받습니다.
/*
* ComboActionEx 클래스를 선언합니다.
* JFrame을 상속받습니다.
*/
public class ComboActionEx extends JFrame{
String[] fruits = {"apple", "banana", "mango"}; // String 타입 배열 friuts를 선언합니다.
// 안의 원소들은 apple, banana, mango입니다. (파일 명이기도 합니다.)
/*
* Swing에서 지원해주는 ImageIcon 클래스입니다.
* 이미지 경로를 저장한 후 화면에 출력하는 역할을 합니다.
* ImageIcon 객체를 생성할 때 이름은 일반적으로 이미지 경로의 상위폴더명과 동일하게 합니다.
* 즉, images라는 폴더는 apple, banana, mango 파일을 가지고 있어야 합니다.
*/
ImageIcon[] images = { // ImageIcon 클래스 객체 images를 배열로 선언합니다.
new ImageIcon("images/apple.jpg"), // [0]
new ImageIcon("images/banana.jpg"), // [1]
new ImageIcon("images/mango.jpg"), // [2]
};
// JLabel 객체 imgLabel을 생성합니다. 초기값은 images[0]입니다.
JLabel imgLabel = new JLabel(images[0]);
ComboActionEx(){ //ComboActionEx를 재정의합니다.
setTitle("ComboBox 활용"); // 창의 이름은 ComboBox로 저장합니다.
/*
* Container는 Swing에서 제공하는 라이브러리 클래스입니다.
* 자바에서 창의 역할을 담당하며 Component들이 올려질 영역입니다.
* contentPane은 화면에 출력될 Component들이 부착될 공간입니다.
*/
Container c = getContentPane();
// Container 클래스 객체 C를 생성 후 contentPane을 가져옵니다.
c.setLayout(new FlowLayout()); // c의 레이아웃를 FlowLayout 클래스를 생성하여 잡아줍니다.
JComboBox combo = new JComboBox(fruits); // ComboBox 클래스 객체 combo를 선언합니다. fruits[0]을 초기값으로 합니다.
c.add(combo); // 컨테이너(창)에 combo를 더합니다.
c.add(imgLabel); // 컨테이너에 imgLabel을 더합니다.
/*
* ActionListener는 보통 버튼에 이벤트가 발생하면 실행됩니다.
* 아래 코드를 통해 콤보박스에서 선택한 것에 대한
* 이벤트 처리입니다.
*/
combo.addActionListener(new ActionListener(){ // combo에 ActionListner를 설정합니다.
public void actionPerformed(ActionEvent e){ // actionPerformed 메서드를 통해 이벤트 처리에 대한 동작을 구현합니다.
JComboBox cb = (JComboBox) e.getSource(); // 동작이 일어날 소스를 JComboBox 형태로 받습니다.
int index = cb.getSelectedIndex(); // int 타입 index를 선언하고 콤보박스에서 선택된 번호 값으로 저장합니다.
imgLabel.setIcon(images[index]); // imgLabel에 image[index]를 불러옵니다.
} // end actionPerformed()
}); // end combo.addActionListener
setBounds(50, 50, 400, 400); // 윈도우 상에서 위치를 잡아 준 후(가로 50, 세로 50) 창의 크기를 설정합니다.(가로 400, 세로 400)
setVisible(true); // 윈도우에서 클래스를 구현한 창이 보이게끔 합니다.
} // end ComboActionEx()
public static void main(String[] args) { // 프로그램의 실행지점인 main 메서드입니다.
// TODO Auto-generated method stub
new ComboActionEx(); // new 연산자를 이용하여 ComboActionEx()를 실행합니다.
} // end main
} // end class
이클립스에서 보니 70줄도 안되네요ㅎㅎ 주석도 한줄마다 달아서 쉽게 이해하실 수 있을 겁니다!
.
여기서 주의하실 점!
(아래 그림을 참고하세요!!!)
.
.
이렇게 이미지 경로를 잡아주어야 합니다!
(이클립스 내에서 폴더 생성을 하고 이미지를 Ctrl+C / Ctrl + V로 밀어 넣으셔도 됩니다.)
이걸 안해주시면 당연히 이미지를 불러 올 수 없으므로 에러가 발생하겠죠?
자, 그럼 어떻게 빌드가 되었는지 한번 볼까요?
.
.
와아~ 이미지가 보여요!
이미지 중에 제일 작은 망고 이미지에 맞추다 보니 사과 사진이 좀 잘렸네요..ㅜ 나중에 업그레이드 시켜야겠습니다ㅎㅎ 그럼 다른 항목들은 괜찮은지 콤보박스를 이용해 목록을 바꿔보겠습니다.
.
.
오오.. 망고는 잘 맞고.. 바나나는 잘렸네요!ㅜㅜ 괜찮습니다!
지금은 GUI를 이용해 이미지를 가지고 놀아봤다는 거 자체로 만족할려고 합니다! 그리고 조금씩 실력을 키워서 저런 것들을 능숙하게 다룰 수 있도록 노력해봐야 겠습니다!