JAVA GUI 피자 주문 애플리케이션 제작
조회수 3203회
JAVA GUI 피자 주문 애플리케이션 제작 중입니다. 미숙하게나마 다른 부분은 다 한 것 같은데, 마지막에 가격을 출력하는 데에 있어서 모르는 부분이 생겨서 질문드립니다. TotalPrice에 SizePrice와 ExtraPrice를 더해서 Price TextField에 출력이 되게 해야하는데, 연산식?이라 해야할까요 그 부분을 잘 모르겠습니다. 도와주시면 감사하겠습니다...
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class WelcomePanel extends JPanel {
private JLabel message;
public WelcomePanel() {
message = new JLabel("자바 피자에 오신것을 환영합니다.");
add(message);
}
}
class TypePanel extends JPanel {
private JRadioButton combo, potato, bulgogi;
public TypePanel() {
setLayout(new GridLayout(3,1));
combo = new JRadioButton("콤보",true);
potato = new JRadioButton("포테이토");
bulgogi = new JRadioButton("불고기");
ButtonGroup Type = new ButtonGroup();
Type.add(combo);
Type.add(potato);
Type.add(bulgogi);
setBorder(BorderFactory.createTitledBorder("종류"));
add(combo);
add(potato);
add(bulgogi);
}
} class ToppingPanel extends JPanel implements ItemListener {
private JCheckBox greenpeper, cheese, peperoni, bacon;
int ExtraPrice = 0;
public ToppingPanel() {
setLayout(new GridLayout(4,1));
greenpeper = new JCheckBox("피망");
cheese = new JCheckBox("치즈");
peperoni = new JCheckBox("페페로니");
bacon = new JCheckBox("베이컨");
setBorder(BorderFactory.createTitledBorder("추가토핑"));
add(greenpeper);
add(cheese);
add(peperoni);
add(bacon);
greenpeper.addItemListener(this);
cheese.addItemListener(this);
peperoni.addItemListener(this);
bacon.addItemListener(this);
}
@Override
public void itemStateChanged(ItemEvent topping) {
if(greenpeper.isSelected() == true)
ExtraPrice += 1000;
if(cheese.isSelected() == true)
ExtraPrice += 1000;
if(peperoni.isSelected() == true)
ExtraPrice += 1000;
if(bacon.isSelected() == true)
ExtraPrice += 1000;
}
}
class SizePanel extends JPanel implements ActionListener {
private JRadioButton s, m, l;
int SizePrice;
public SizePanel() {
setLayout(new GridLayout(3,1));
s = new JRadioButton("Small",true);
m = new JRadioButton("Medium");
l = new JRadioButton("Large");
ButtonGroup Size = new ButtonGroup();
Size.add(s);
Size.add(m);
Size.add(l);
setBorder(BorderFactory.createTitledBorder("크기"));
add(s);
add(m);
add(l);
s.addActionListener(this);
m.addActionListener(this);
l.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent size) {
if(s.isSelected() == true) {
SizePrice = 12000;
}
if(m.isSelected() == true) {
SizePrice = 15000;
}
if(l.isSelected() == true) {
SizePrice = 18000;
}
}
}
public class PizzaOrder extends JFrame {
private static final int ExtraPrice = 0;
private static final int SizePrice = 0;
private JButton order, cancel;
JTextField Price;
int TotalPrice;
WelcomePanel WP = new WelcomePanel();
TypePanel TP = new TypePanel();
ToppingPanel TpP = new ToppingPanel();
SizePanel SP = new SizePanel();
public PizzaOrder() {
setSize(550,250);
setTitle("피자 주문");
JPanel J = new JPanel();
order = new JButton("주문");
cancel = new JButton("취소");
Price = new JTextField(10);
J.add(order);
J.add(cancel);
J.add(Price);
add(WP,BorderLayout.NORTH);
add(TP,BorderLayout.WEST);
add(TpP,BorderLayout.CENTER);
add(SP,BorderLayout.EAST);
add(J,BorderLayout.SOUTH);
order.addActionListener(a -> {
## 이 부분입니다..
Price.setText("" + TotalPrice);
});
cancel.addActionListener(b -> {
TotalPrice = 0;
Price.setText("" + TotalPrice);
});
setVisible(true);
}
public static void main(String[] args) {
PizzaOrder PO = new PizzaOrder();
}
}
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
안녕하세요 :-)
SizePrice은 여기서 찾을 수 있고:
class SizePanel extends JPanel implements ActionListener { //...중략... public int SizePrice; //...중략... }
ExtraPrice는 여기서 찾을 수 있으며:
private JCheckBox greenpeper, cheese, peperoni, bacon; //...중략... public int ExtraPrice = 0; //...중략... }
출력해줘야할 이벤트 메소드에서 모두 더해주시면 되겠죠?
public class PizzaOrder extends JFrame { // **위의 클래스 내 멤버변수에서 가져올 아이들이기 때문에 여기선 굳이 멤버로 필요하지 않을 것입니다. //private static final int ExtraPrice = 0; //private static final int SizePrice = 0; int TotalPrice; //...중략... public PizzaOrder() { // ...중략... order.addActionListener(a -> { // 이 부분입니다... this.TotalPrice = SizePanel.SizePrice+ToppingPanel.ExtraPrice; Price.setText("" + TotalPrice.toString()); }); // ...중략... }
여기서 받는 조언들이 당장의 급한 불은 끌 수 있겠지만 '내 것'으로 만드시기 위해 조금 더 공부해보시는 것은 어떠신지요?
도움이 되셨기를 바랍니다.
감사합니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력