ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JAVA] 자바 JCheckBox, 체크박스 컴포넌트,체크박스 생성 예제,JCheckBox에서 item 이벤트 처리 , item 이벤트 처리 예제
    Languages/Java 2021. 5. 4. 15:19
    반응형

     

     

     

     

     

     

     

    JCheckBox 

     

    선택(selected)과 비선택(deselected)의

    두 상태만 가지는 체크 버튼

     

     

     

     

    생성자

     

    JCheckBox() 빈 체크박스

    JCheckBox(String text) 문자열 체크박스

    JCheckBox(String text, boolean selecd) 문자열 체크박스

    JCheckBox(Icon image) 이미지 체크박스

    JCheckBox(Icon image, boolean selected) 이미지 체크박스

    JCheckBox(String text, Icon image) 문자열과 이미지를 가진 체크박스

    JCheckBox(String text, Icon image, boolean selected) 문자열과 이미지를 가진 체크박스

     

     

    ** ㄴselected : true이면 선택 상태로 초기화, 디폴트는 해제 상태

     

     

     

     

    체크 박스 생성

     

    문자열 체크 박스

     

    "사과" 텍스트를 가진 체크박스 생성

     

    JCheckBox c = new JCheckBox("사과");
    

     

    "배" 텍스트를 가지고 선택 상태로 체크박스 생성

     

    JCheckBox c = new JCheckBox("배",ture);

     

    이미지 체크박스

     

    cherry.jpg이미지와 "체리" 텍스트를 가진 체크박스 생성의 예

     

    ImageIcon cherryIcon = new ImageIcon("imeges/cherry.jpg");
    ImageIcon selectedCherryIcon = new ImageIcon("imeges/selectedCherry.jpg");
    JCheckBox cherry = new JCheckBox("체리",cherryIcon);
    cherry.setSelectedIcon(selectedCherryIcon); //선택 상태의 이미지 달기

     

     

     

     

     

     

    체크박스 생성 예제

     

     

     

     

    package project;
    
    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());
    		ImageIcon cherryIcon = new ImageIcon("images/cherry.jpg");
    		ImageIcon selectedcherryIcon = new ImageIcon("images/selectedCherry.jpg");
    		
    		JCheckBox apple = new JCheckBox("사과");
    		JCheckBox pear = new JCheckBox("배",true);
    		JCheckBox cherry = new JCheckBox("체리", cherryIcon);
    		cherry.setBorderPainted(true);
    		cherry.setSelectedIcon(selectedcherryIcon);
    		
    		c.add(apple);
    		c.add(pear);
    		c.add(cherry);
    		
    		setSize(250,250);
    		setVisible(true);
    	}
    	public static void main(String [] args) {
    		new CheckBoxEx();
    	}
    }
    

     

     

     

    실행결과

     

    기본화면 >>>

     

     

    체리를 클릭 했을 때 selectedIcon으로 이미지 변경 >>>

     

     

     

     

     

     

     

    JCheckBox에서 item 이벤트 처리

     

    item 이벤트

     

    체크박스나 라디오버튼의 선택 상태가 바뀌어 발생하는 이벤트

     

    마우스나 키보드로 체크박스를 선택 상태를 바꾸는 경우

    프로그램에서 선택 상태를 바꾸는 경우

     

    JCheckBox c = new JCheckBox("사과");
    c.setSelected(true); // 선택 상태 변경
    

     

     

    알고 있자!

     

    컴포넌트는 다른 이벤트에 대한 리스너를 동시에 가질 수 있다.

     

    컴포넌트는 한 이벤트에 대해 여러 개의 리스너를 동시에 가질 수 있다.

     

     

    itemListener 인터페이스의 추상 메소드

     

    void itemStateChanged(ItemEvent e) 체크박스의 선택/해제 상태가 변하는 경우 호출
    

     

    itemEvent의 주요 메소드

     

    int getStateChange()
    리턴 값은 선택된 경우 ItemEvent.SELECTED, 해제된 경우 ItemEvent.DESELECTED
    Object getItem()
    이벤트를 발생시킨 아이템 객체 리턴, 체크박스의 경우 JCheckBox 컴포넌트의 래퍼런스 리턴
    

     

     

     

     

    이벤트 처리 생성 예제

     

     

    package project;
    
    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원"));
    	MyItemListener listener = new MyItemListener();
    	
    	for(int i=0; i<fruits.length; i++) {
    		fruits[i] = new JCheckBox(names[i]); 
    		fruits[i].setBorderPainted(true);
    		c.add(fruits[i]);
    		fruits[i].addItemListener(listener);
    	}
    	sumLabel = new JLabel("현재 0 원 입니다.");
    	c.add(sumLabel);
    	setSize(250,200);
    	setVisible(true);
    	}
    	class MyItemListener implements ItemListener {
    		private int sum = 0; // 가격의 합
    		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();
    		}
    	}
    

     

     

     

     

    실행결과

     

     

    반응형

    댓글

Designed by Tistory.