import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
public class SaleGUI extends JFrame {
private JPanel p1 = null; //放置标签及输入框
private JPanel p2 = null; //放置3个按钮
private JPanel p3 = null; //放置1个标签提示“取走饮料”
private JTextField jtf = null; //输入硬币数
private JLabel jlb = null; //remind people to input input the money
private JLabel jlb1 = null; //提示“取走饮料”
private JButton jbtOrange = null;
private JButton jbtBeer = null;
private JButton jbtCoffee = null;
private int OrangeNum = 3; //记录橙汁的存货量
private int BeerNum = 3; //记录啤酒的存货量
private int CoffeeNum = 0; //记录咖啡的存货量
private int coin50 = 5; //记录售货机的50分硬币数目
private int coin100 = 3; //记录售货机的100分硬币数目
public SaleGUI(){
//create a line border
Border lineBorder = new LineBorder(Color.GRAY,2);
//create a panel to hold a text field
p1 = new JPanel(new BorderLayout());
jlb = new JLabel("投币口:");
jtf = new JTextField(5);
//set default value of text field
jtf.setText("0");
//register action listener for JTextField
jtf.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
jtf.requestFocusInWindow();
}
});
//set line border for panel p1
p1.setBorder(lineBorder);
//add text field into panel p1
p1.add(jlb,BorderLayout.WEST);
p1.add(jtf,BorderLayout.CENTER);
//panel p2 holds three buttons
p2 = new JPanel(new GridLayout(1,3));
ImageIcon image1 = new ImageIcon("d:\\yiyu\\workspace\\SaleMachine\\src\\gui.icon\\orange.jpg") ;
ImageIcon image2 = new ImageIcon("d:\\yiyu\\workspace\\SaleMachine\\src\\gui.icon\\beer.jpeg");
ImageIcon image3 = new ImageIcon("d:\\yiyu\\workspace\\SaleMachine\\src\\gui.icon\\coffee.jpeg");
//设置图片尺寸
jbtOrange = new JButton("Orange juice :50 cent",image1);
jbtBeer = new JButton("Beer :50 cent",image2);
jbtCoffee = new JButton("Coffee :100 cent",image3);
//register action listener
jbtOrange.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){
String str = null;
//获取用户投进的硬币
String s = jtf.getText();
int money = Integer.parseInt(s);
if( money > 0 && checkCoin(money) ) {//已投币
/*判断投入的是5角还是1元硬币*/
str = alternativeBuyOrange(money);
if(str.equals("可以售出")) {//投入硬币币种正确,进行售出
SaleMachine client = new SaleMachine();
String back = client.buy("Orange", money);
/*修改售货机内的硬币数以及饮料库存量*/
if(back.equals("请取走饮料!")) {
/*投入的币种是5角,售货机中5角硬币数量加1*/
setCoin50(getCoin50() + 1);
/*修改饮料库存*/
setOrangeNum(getOrangeNum() - 1);
}
else {
/*投入的币种是1元,售货机中5角硬币数量减1,1元硬币数量加1*/
setCoin50(getCoin50() - 1);
setCoin100(getCoin100() + 1);
/*修改饮料库存*/
setOrangeNum(getOrangeNum() - 1);
}
jlb1.setText(back); //提示客户购买信息
}
else jlb1.setText(str); //饮料已售完或暂时不能找钱,需要提示客户
}
else jlb1.setText("请先投币,售货机支持5角或1元的硬币!");
}
});
jbtBeer.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){
String str = null;
//获取用户投进的硬币
String s = jtf.getText();
int money = Integer.parseInt(s);
if( money > 0 && checkCoin(money) ) {//已投币
str = alternativeBuyBeer(money); //判断投入的是5角还是1元硬币
if(str.equals("可以售出")) {//投入硬币币种正确,进行售出
SaleMachine client = new SaleMachine();
String back = client.buy("Beer", money);
/*修改售货机内的硬币数以及饮料库存量*/
if(back.equals("请取走饮料!")) {
/*投入的币种是5角,售货机中5角硬币数量加1*/
setCoin50(getCoin50() + 1);
/*修改饮料库存*/
setBeerNum(getBeerNum() - 1);
}
else {
/*投入的币种是1元,售货机中5角硬币数量减1,1元硬币数量加1*/
setCoin50(getCoin50() - 1);
setCoin100(getCoin100() + 1);
/*修改饮料库存*/
setBeerNum(getBeerNum() - 1);
}
jlb1.setText(back); //提示客户购买信息
}
else jlb1.setText(str); //饮料已售完或暂时不能找钱,需要提示客户
}
else jlb1.setText("请先投币,售货机支持5角或1元的硬币!");
}
});
jbtCoffee.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){
String str = null;
//获取用户投进的硬币
String s = jtf.getText();
int money = Integer.parseInt(s);
if( money > 0 && checkCoin(money) ) {//已投币
str = alternativeBuyCoffee(money);
if(str.equals("可以售出")) {
SaleMachine client = new SaleMachine();
String back = client.buy("Coffee", money);
/*修改售货机内的硬币数以及饮料库存量*/
setCoin100(getCoin100() + 1);
/*修改饮料库存*/
setCoffeeNum(getCoffeeNum() - 1);
jlb1.setText(back);
}
else jlb1.setText(str);
}
else jlb1.setText("请先投币,售货机支持5角或1元的硬币!");
}
});
//set background of buttons
jbtOrange.setBackground(Color.WHITE);
jbtBeer.setBackground(Color.WHITE);
jbtCoffee.setBackground(Color.WHITE);
//set the button text location
jbtOrange.setHorizontalTextPosition(SwingConstants.CENTER);
jbtBeer.setHorizontalTextPosition(SwingConstants.CENTER);
jbtCoffee.setHorizontalTextPosition(SwingConstants.CENTER);
jbtOrange.setVerticalTextPosition(SwingConstants.BOTTOM);
jbtBeer.setVerticalTextPosition(SwingConstants.BOTTOM);
jbtCoffee.setVerticalTextPosition(SwingConstants.BOTTOM);
//set tool tip text on buttons
jbtOrange.setToolTipText("Click here to choose Orange!");
jbtBeer.setToolTipText("Click here to choose Beer!");
jbtCoffee.setToolTipText("Click here to choose Coofee!");
//create font object
// Font font = new Font("Times New Roman",Font.BOLD,16);
// //set font on buttons
// jbtOrange.setFont(font);
// jbtBeer.setFont(font);
// jbtCoffee.setFont(font);
//set line border for panel p2
p2.setBorder(lineBorder);
//add these buttons into panel p2
p2.add(jbtOrange);
p2.add(jbtBeer);
p2.add(jbtCoffee);
//create panel p3 to hold a label
p3 = new JPanel();
jlb1 = new JLabel();
//set line border for panel p3
p3.setBorder(lineBorder);
p3.add(jlb1);
//add panels into the frame
BorderLayout layout = new BorderLayout();
layout.setVgap(5);
setLayout(layout);
add(p1,BorderLayout.NORTH);
add(p2,BorderLayout.CENTER);
add(p3,BorderLayout.SOUTH);
}
/*
* checkCoin()验证硬币是否50分或100分
* */
public static boolean checkCoin(int money){
switch(money) {
case 50:
case 100: return true;
default: return false;
}
}
/*
*
* */
public String alternativeBuyOrange(int money){
String s = null;
switch(money){
case 50:{
if(getOrangeNum() != 0){//有存货量,可以实现购买
s = "可以售出";
break;
}
}
case 100:{
if(getOrangeNum() != 0 ){
if(getCoin50() > 0) {//有存货量,可以实现购买
s = "可以售出";
}
else s = "对不起,目前不能找钱,请投5角硬币!";
}
else s = "目前该饮料已经售完!";
}
break;
}
return s.toString();
}
public String alternativeBuyBeer(int money){
String s = null;
switch(money){
case 50:{
if(getBeerNum() != 0){//有存货量,可以实现购买
s = "可以售出";
break;
}
}
case 100:{
if(getBeerNum() != 0 ){
if(getCoin50() > 0) {//有存货量,可以实现购买
s = "可以售出";
- 1
- 2
- 3
- 4
前往页