import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
/*
 *  [2] 체크박스를 갖는 배열 3개(티셔츠, 모자, 운동화)를 생성하여,
 *      각 체크박스를 선택하면 금액이 출력되는(JLabel) 프로그램
 *      - 첫 번째 라벨 생성 : 품명, 금액 -> 폰트(궁서체, 굵게, 20pt) 설정
 *      - 체크박스 3개 배열
 *      - 두 번째 라벨 : 지불할 합계 금액(int sum = 0;)이 합계
 *      - 만약, 체크 해제시 => 합계 금액에서 차감되도록 설정
 */
public class Check2 extends JFrame {
 JPanel p;
 JLabel lbl = new JLabel();
 int sum = 0; // 합계 금액
 JCheckBox[] Order = new JCheckBox[3]; // 3개 품목을 갖는 체크박스
 String[] name = {"티셔츠", "모자", "운동화"}; // 체크박스 문자열로 사용
 
 Check2() {
  this.setTitle("배열 체크박스 주문 예제");
  this.setSize(600, 300);
  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  
  p = new JPanel(); p.setLayout(new FlowLayout());
  
  // 첫 번째 라벨 생성
  JLabel l = new JLabel("티셔츠 -10,000원     모자-7,000원     운동화-20,000원");
  l.setFont(new Font("궁서체", Font.BOLD, 20));
  p.add(l);
  
  // 문자열을 갖는 체크박스 3개 생성 => 패널 부착 => 리스너 등록
  for(int i=0; i<Order.length; i++) {
   Order[i] = new JCheckBox(name[i]); // 문자열을 갖는 체크박스 생성
   Order[i].setBorderPainted(true); // 체크박스의 외곽선(테두리) 보여주기
   p.add(Order[i]); // 패널에 체크박스 부착하기
   Order[i].addItemListener(new MyItem()); // 체크박스에 리스너 등록
  }
  
  // 계산 총 금액 라벨 출력하고 패널에 부착
  lbl.setText("계산 총 금액은 0원 입니다.");
  p.add(lbl);
  
  this.setContentPane(p);
  this.setVisible(true);
 }
 
 class MyItem implements ItemListener {
  public void itemStateChanged(ItemEvent e) {
   int select = 1;
   if(e.getStateChange() == ItemEvent.SELECTED)
    select = 1;
   else
    select = -1;
   
   if(e.getItem() == Order[0])
    sum = sum+(10000*select);
   else if(e.getItem() == Order[1])
    sum = sum+(7000*select);
   else
    sum = sum+(20000*select);
   
   lbl.setText("계산 총 금액은" + sum + "원 입니다.");
  }
 }
 
 public static void main(String[] args) {
  new Check2();

 }

+ Recent posts