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();
}
}
'IT > JAVA' 카테고리의 다른 글
[JAVA/자바] 널 레이아웃(NullLayout) 예제 (0) | 2017.05.30 |
---|---|
[JAVA/자바] 액션리스너(ActionListener) 예제 (0) | 2017.05.30 |
[JAVA/자바] 체크박스(CheckBox) 예제 - 1 (0) | 2017.05.30 |
[JAVA/자바] 텍스트 문자열 예제 (JTextField / JTextArea) (0) | 2017.05.30 |
[JAVA/자바] JMenuBar 를 이용한 간단한 예제 (0) | 2017.05.30 |