package p0624pizza;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import javax.swing.border.BevelBorder;
import javax.swing.border.Border;
import javax.swing.border.CompoundBorder;
import javax.swing.border.EtchedBorder;
import javax.swing.border.LineBorder;
import javax.swing.border.MatteBorder;
import javax.swing.border.TitledBorder;
class Pizza extends JFrame {
JPanel welcome = new JPanel();
JPanel type = new JPanel();
JPanel topping = new JPanel();
JPanel size = new JPanel();
JPanel button = new JPanel();
JLabel lbl1;
ButtonGroup group, group2;
JRadioButton combo, potato, bulgogi;
JCheckBox p, ch, pe, b;
JRadioButton small, medium, large;
JButton button1, button2;
JTextField field1, field2;
int price = 0;
int total = 0;
String str = "";
public Pizza() { // 생성자
setTitle("피자 주문");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(600, 200, 600, 700);
showNorth(); // welcome
showWest(); // type
showCenter(); // topping
showEast(); // size
showSouth(); // button
setVisible(true);
}
void showNorth() { // welcome
// 중간 패널에 그룹 경계선 (Border 객체)
Border border = BorderFactory.createTitledBorder("미스터 피자!");
welcome.setBorder(border); // 생성한 객체를 사용하려면 setBorder로 쓰기
lbl1 = new JLabel("미스터 피자에 오신것을 환영합니다.");
welcome.add(lbl1);
add("North", welcome);
// add(welcome,BorderLayout.NORTH);
}
void showWest() { // type
type.setLayout(new GridLayout(0, 1));
combo = new JRadioButton("콤보(10000)");
potato = new JRadioButton("포테이토(12000)");
bulgogi = new JRadioButton("불고기(15000)");
group = new ButtonGroup(); // 그냥 그룹으로만 묶은거, 화면에 띄우는게 아님
group.add(combo);
group.add(potato);
group.add(bulgogi);
// 중간 패널에 그룹 경계선 (Border 객체)
Border border = BorderFactory.createTitledBorder("종류");
type.setBorder(border); // 생성한 객체를 사용하려면 setBorder로 쓰기
type.add(combo);
type.add(potato);
type.add(bulgogi);
add("West", type);
}
void showCenter() { // topping
topping.setLayout(new GridLayout(0, 1));
p = new JCheckBox("피망(+1000)");
ch = new JCheckBox("치즈(+2000)");
pe = new JCheckBox("페퍼로니(+1000)");
b = new JCheckBox("베이컨(+2000)");
// 중간 패널에 그룹 경계선 (Border 객체)
Border border = BorderFactory.createTitledBorder("추가토핑");
topping.setBorder(border); // 생성한 객체를 사용하려면 setBorder로 쓰기
topping.add(p);
topping.add(ch);
topping.add(pe);
topping.add(b);
add("Center", topping);
}
void showEast() { // size
size.setLayout(new GridLayout(0, 1));
small = new JRadioButton("Small(기본)");
medium = new JRadioButton("Medium(+5000)");
large = new JRadioButton("Large(+10000)");
group2 = new ButtonGroup(); // 그냥 그룹으로만 묶은거, 화면에 띄우는게 아님
group2.add(small);
group2.add(medium);
group2.add(large);
// 중간 패널에 그룹 경계선 (Border 객체)
Border border = BorderFactory.createTitledBorder("크기");
size.setBorder(border); // 생성한 객체를 사용하려면 setBorder로 쓰기
size.add(small);
size.add(medium);
size.add(large);
add("East", size);
}
void showSouth() { // button
button1 = new JButton("주문");
button2 = new JButton("취소");
field1 = new JTextField(25);
field2 = new JTextField("0", 8);
MatteBorder b6 = new MatteBorder(5, 5,5,5, Color.pink);
button.setBorder(b6);
button.add(button1);
button.add(button2);
button.add(field1);
button.add(field2);
add("South", button);
button1.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JButton btn1 = (JButton) e.getSource();
if (btn1.getText() == "주문") {
price = 0;
if (combo.isSelected()) {
price += 10000;
str = " 콤보";
}
if (potato.isSelected()) {
price += 12000;
str = " 포테이토";
}
if (bulgogi.isSelected()) {
price += 15000;
str = " 불고기";
}
if (p.isSelected()) {
price += 1000;
}
if (ch.isSelected()) {
price += 2000;
}
if (pe.isSelected()) {
price += 1000;
}
if (b.isSelected()) {
price += 2000;
}
if (medium.isSelected()) {
price += 5000;
}
if (large.isSelected()) {
price += 10000;
}
//field1의 텍스트를 받아온 후 피자이름str을 붙여주고 텍스트필드로 전달되는 int price를 String타입으로 변경
field1.setText(field1.getText() + str + Integer.toString(price));
//모든 price를 더한 값=total
total += price;
field2.setText(Integer.toString(total));
}
}
});
button2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
JButton btn2 = (JButton) e.getSource();
if (btn2.getText() == "취소") {
// 그룹되어있는 라디오버튼은 한번에 clear
group.clearSelection();
group2.clearSelection();
// 그룹 안되어 있는 체크박스는 하나씩 선택된걸 false로 바꿈
p.setSelected(false);
ch.setSelected(false);
pe.setSelected(false);
b.setSelected(false);
// 텍스트필드 값은 0으로 만듦
field1.setText("");
field2.setText("0");
str = null;
price = 0;
}
}
});
}
}
public class PizzaEx {
public static void main(String[] args) {
// TODO Auto-generated method stub
new Pizza();
}
}
'IT > Java' 카테고리의 다른 글
Java (로또번호생성 프로그램) (0) | 2021.07.07 |
---|---|
Java GUI (겜블링 게임) (0) | 2021.06.24 |
Java GUI (원 넓이 구하기) (0) | 2021.06.21 |
Java (상속_친구정보 등록관리_검색,삭제) (0) | 2021.06.11 |
Java (상속_친구정보 등록관리_저장,출력) (0) | 2021.06.11 |