JLabel, 레이블 컴포넌트
JLabel은 문자열이나 이미지를 스크린에 출력하는 레이블 컴포넌트를 만드는 클래스이다.
레이블 컴포넌트 생성
레이블 컴포넌트는 레이블이라고도 부르며, 다음 생성자를 이용하여 생성한다.
JLable() | 빈생성자 |
JLable(Icon image) | 이미지 레이블 |
JLable(String text) | 문자열 레이블 |
JLable(String text, Icon image, int hAlign) | 문자열과 이미지를 모두 가진 레이블 |
hAlign : 수평 정렬(SwingConstants.LEFT, SwingConstants.RIGHT, SwingConstants.CENTER )
문자열 레이블 생성예
JLabel textLabel = new JLabel("사랑합니다."); |
이미지 레이블 생성예
ImageIcon image = new ImageIcon("images/img1.jpg"); // jpg, gif, png파일만 사용가능 JLabel imageLabel = new JLabel(image); |
문자열, 이미지, 수평 정렬 값을 가진 레이블 생서예
ImageIcon image = new ImageIcon("images/img1.jpg"); JLabel Label = new JLabel("사랑합니다.", image, SwingConstants.CENTER); |
JLabel을 이용한 레이블 만들기
import javax.swing.*; import java.awt.*;
public class LabelEx extends JFrame { public LabelEx() { setTitle("레이블 예제"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container c = getContentPane(); c.setLayout(new FlowLayout());
// 문자열 레이블 생성 JLabel textLabel = new JLabel("사랑합니다.");
// 이미지 레이블 생성 ImageIcon beauty = new ImageIcon("images/beauty.jpg"); // 이미지 로딩 JLabel imageLabel = new JLabel(beauty); // 이미지 레이블 생성
// 문자열과 이미지를 모두 가진 레이블 생성 ImageIcon normalIcon = new ImageIcon("images/normalIcon.gif"); // 이미지 로딩 JLabel label = new JLabel("보고싶으면 전화하세요", normalIcon, SwingConstants.CENTER); // 레이블 생성
// 컨텐트팬에 3개의 레이블 부착 c.add(textLabel); c.add(imageLabel); c.add(label);
setSize(400,600); setVisible(true); }
public static void main(String [] args) { new LabelEx(); } } |
실행 결과]
JButton, 버튼 컴포넌트
버튼 컴포넌트 생성
버튼은 다음 생성자를 이용하여 생성한다.
JButton() | 빈 버튼 |
JButton(Icon image) | 이미지 버튼 |
JButton(String text) | 문자열 버튼 |
JButton(String text, Icon image) | 문자열과 이미지를 가진 버튼 |
문자열을 가진 버튼예
JButton btn = new JButton("버튼생성1"); |
이미지 버튼만들기
버튼은 3가지 형태로 만들수 있다. (normalIcon, rolloverIcon, pressedIcon)
ImageIcon normalIcon = new ImageIcon("images/normalIcon.gif"); ImageIcon rolloverIcon = new ImageIcon("images/rolloverIcon.gif"); ImageIcon pressedIcon = new ImageIcon("images/pressedIcon.gif");
JButton btn = new JButton("테스트버튼", normalIcon); // normalIcon 이미지 btn.setPressedIcon(pressedIcon); // pressedIcon 이미지 btn.setRolloverIcon(rolloverIcon); // rolloverIcon 이미지 |
setIcon() 메소드는 디폴트 이미지를 변경할때 사용하는 함수이다.
button.setIcon(new ImageIcon(images/newIcon.gif)); |
JButton을 이용한 버튼 만들기
import javax.swing.*; import java.awt.*;
public class ButtonEx extends JFrame { public ButtonEx() { setTitle("이미지 버튼 예제"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container c = getContentPane(); c.setLayout(new FlowLayout());
// 3개의 이미지를 파일로부터 읽어들인다. ImageIcon normalIcon = new ImageIcon("images/normalIcon.jpg"); ImageIcon rolloverIcon = new ImageIcon("images/rolloverIcon.jpg"); ImageIcon pressedIcon = new ImageIcon("images/pressedIcon.jpg");
// 3개의 이미지를 가진 버튼 생성 JButton btn = new JButton("call~~", normalIcon); // normalIcon용 이미지 등록 btn.setPressedIcon(pressedIcon); // pressedIcon용 이미지 등록 btn.setRolloverIcon(rolloverIcon); // rolloverIcon용 이미지 등록 c.add(btn);
setSize(250,150); setVisible(true); }
public static void main(String [] args) { new ButtonEx(); } } |
실행 결과]
JCheckBox, 체크박스 컴포넌트
체크박스 컴포넌트 생성
JCheckBox() | 빈 체크박스 |
JCheckBox(String text) | 문자열 체크박스 |
JCheckBox(String text, boolean selected) | 문자열 체크박스 |
JCheckBox(Icon image) | 이미지 체크박스 |
JCheckBox(Icon image, boolean selected) | 이미지 체크박스 |
JCheckBox(String text, Icon image) | 문자열과 이미지를 가진 체크박스 |
JCheckBox(String text, Icon image, boolean selected) | 문자열과 이미지를 가진 체크박스 |
문자열 체크박스예
JCheckBox apple = new JCheckBox("사과"); |
문자열을 가지고 처음부터 선택 상태인 체크박스예
JCheckBox prar = new JCheckBox("배", true); |
이미지 체크박스
ImageIcon cherryIcon = new ImageIcon("images/cherry.jpg"); // 해제 상태 이미지 ImageIcon selectedCherryIcon = new ImageIcon("images/selectedCherry.jpg"); // 선택 상태 이미지 JCheckBox cherry = new JCheckBox("체리", cherryIcon); // 해제 상태 이미지만 가진 체크 cherry.setSelectedIcon(selectedCherryIcon); // 선택 상태 이미지 등록 |
문자열 체크박스 2개와 이미지 체크박스 1개를 가진 프로그램을 작성하시오.
import javax.swing.*; import java.awt.*;
public class CheckBoxEx extends JFrame { public CheckBoxEx() { setTitle("체크박스 이미지 예제"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container c = getContentPane(); c.setLayout(new FlowLayout());
// 이미지 체크박스에 사용할 2개의 이미지 객체 생성 ImageIcon cherryIcon = new ImageIcon("images/cherry1.jpg"); // 해제 상태 이미지 ImageIcon selectedCherryIcon = new ImageIcon("images/selectedCherry1.jpg"); // 선택 상태 이미지
// 3개의 체크박스 생성 JCheckBox apple = new JCheckBox("사과"); JCheckBox pear = new JCheckBox("배", true); JCheckBox cherry = new JCheckBox("체리", cherryIcon);
cherry.setBorderPainted(true); // 체크박스 외곽선이 보이도록 설정 cherry.setSelectedIcon(selectedCherryIcon); // 선택 상태 이미지 등록
// 컨텐트팬에 3개의 체크박스 부착 c.add(apple); c.add(pear); c.add(cherry);
setSize(250,150); setVisible(true); }
public static void main(String [] args) { new CheckBoxEx(); } } |
실행 결과]
JCheckBox에서 Item 이벤트 처리
Item 이벤트는 체크박스나 라디오버튼의 선택 상태가 바뀔 때 발생하는 이벤트이다.
ItemListener 인터페이스
Item 이벤트 리스너는 ItemListener 인터페이스를 상속받아 만들며, 다음 하나의 메소드로 구성된다.
void itemStateChanged(ItemEvent e); //체크박스의 선택/해제 상태가 변하는 경우 호출 |
ItemEvent 객체
Item 이벤트가 발생하면 ItemEvent 객체가 생성되어 itemStateChanged()의 인자로 전달된다. 개발자는 ItemEvent 객체의 다음 메소드를 호출하여 체크 상태의 변화와 이벤트 소스 컴포넌트를 알아낼 수 있다.
int getStateChange() | 리턴 값은 선택된 경우 ItemEvent.SELECTED, 해제된 경우 ItemEvent.DESELECTED |
Object getItem() | 이벤트를 발생시킨 아이템 객체 리턴, 체크박스의 경우 JCheckBox 컴포넌트의 레퍼런스 리턴 |
체크박스 컴포넌트에 ItemListener 리스너 달기
JCheckBox의 addItemListener() 메소드를 이용하여 다음과 같이 등록한다.
checkbox.addItemListener(new myItemListener()); |
ItemEvent를 활용하여 체크박스로 가격 합산하기 프로그램
import javax.swing.*; import java.awt.event.*; import java.awt.*;
public class CheckBoxItemEventEx extends JFrame { private JCheckBox [] fruits = new JCheckBox [3]; // 체크박스 배열 private String [] names = {"사과", "배", "체리"}; // 체크박스 문자열로 사용할 문자열 배열 private JLabel sumLabel; // 계산 합을 출력할 레이블
public CheckBoxItemEventEx() { setTitle("체크박스와 ItemEvent 예제"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Container c = getContentPane(); c.setLayout(new FlowLayout());
c.add(new JLabel("사과 100원, 배 500원, 체리 20000원"));
// 3개의 체크박스를 생성. 컨텐트팬에 삽입하고 Item 리스너 등록 MyItemListener listener = new MyItemListener(); for(int i=0; i<fruits.length; i++) { fruits[i] = new JCheckBox(names[i]); // names[]의 문자열로 체크박스 생성 fruits[i].setBorderPainted(true); // 체크박스 외곽선 보이도록 설정 c.add(fruits[i]); // 컨텐트팬에 체크박스 삽입 fruits[i].addItemListener(listener); // 체크박스에 Item 리스너 등록 }
sumLabel = new JLabel("현재 0 원 입니다."); // 가격 합을 출력하는 레이블 생성 c.add(sumLabel);
setSize(250,200); setVisible(true); }
// Item 리스너 구현 class MyItemListener implements ItemListener { private int sum = 0; // 가격의 합
// 체크박스의 선택 상태가 변하면 itemStateChanged()가 호출됨 public void itemStateChanged(ItemEvent e) { if(e.getStateChange() == ItemEvent.SELECTED) { // 선택 경우 if(e.getItem() == fruits[0]) // 사과 체크박스 sum += 100; else if(e.getItem() == fruits[1]) // 배 체크박스 sum += 500; else // 체리 체크박스 sum += 20000; } else { // 해제 경우 if(e.getItem() == fruits[0]) // 사과 체크박스 sum -= 100; else if(e.getItem() == fruits[1]) // 배 체크박스 sum -= 500; else // 체리 체크박스 sum -= 20000; } sumLabel.setText("현재 "+ sum + "원 입니다."); // 합 출력 } } public static void main(String [] args) { new CheckBoxItemEventEx(); } } |
실행 결과]
'프로그램언어 > 자바' 카테고리의 다른 글
스윙 컴포넌트의 공통 메소드4 (0) | 2020.11.05 |
---|---|
스윙 컴포넌트의 공통 메소드3 (0) | 2020.11.04 |
스윙 컴포넌트의 공통 메소드1 (0) | 2020.11.04 |
이벤트 리스너 예제3 (0) | 2020.11.04 |
이벤트 리스너 예제2 (0) | 2020.11.03 |