java GUI 猜数字游戏


界面

 1 package com.lovo.hilo;
 2 
 3 import java.awt.Container;
 4 import java.awt.GridLayout;
 5 import java.awt.Toolkit;
 6 
 7 import javax.swing.JFrame;
 8 
 9 public class HiLoFrame extends JFrame {
10 
11     private Container contentP;
12 
13     private UpPanel upP;
14 
15     private MidPanel mdP;
16 
17     private DownPanel dnP;
18     
19     private int randomNum;
20 
21     public HiLoFrame() {
22         this.randomNum = (int)(Math.random() * 50 + 50);
23         System.out.println(this.randomNum);
24         // 工具箱类--ToolKit
25         Toolkit tk = Toolkit.getDefaultToolkit();
26         // 设置窗体大小
27         this.setSize(320, 290);
28         // 设置窗体位置
29         int screenW = (int) tk.getScreenSize().getWidth();// 得到屏幕宽
30         int screenH = (int) tk.getScreenSize().getHeight();// 得到屏幕高
31         this.setLocation((screenW - 320) / 2, (screenH - 290) / 2);
32         // 设置窗体大小不可更改
33         this.setResizable(true);
34         // 设置窗体图标
35         this.setIconImage(tk.createImage("img/hp.JPG"));
36         // 设置窗体的标题
37         this.setTitle("HiLo游戏");
38         // 设置窗体关闭即为关闭程序
39         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
40         // 设置窗体内容面板上所有的东西
41         this.addContent();
42         // 设置窗体可见
43         this.setVisible(true);
44     }
45 
46     
47 
48     private void addContent() {
49         // TODO Auto-generated method stub
50         this.contentP = this.getContentPane();
51         this.contentP.setLayout(new GridLayout(3, 1));
52         
53         this.upP = new UpPanel();
54         this.mdP = new MidPanel();
55         this.dnP = new DownPanel(this);
56         
57         this.contentP.add(this.upP);
58         this.contentP.add(this.mdP);
59         this.contentP.add(this.dnP);
60     }
61 
62     public UpPanel getUpP() {
63         return upP;
64     }
65 
66     public MidPanel getMdP() {
67         return mdP;
68     }
69 
70     public DownPanel getDnP() {
71         return dnP;
72     }
73 
74     public int getRandomNum() {
75         return randomNum;
76     }
77     
78     public void setRandomNum(int randomNum) {
79         this.randomNum = randomNum;
80     }
81 
82 }


内部的功能
 1 package com.lovo.hilo;
 2 
 3 import java.awt.Color;
 4 
 5 import javax.swing.BorderFactory;
 6 import javax.swing.JPanel;
 7 import javax.swing.JTextField;
 8 
 9 //JPanel的默认布局管理是流布局
10 public class UpPanel extends JPanel{
11     
12     private JTextField inputTxt;
13     
14     public UpPanel(){
15         this.setBackground(Color.WHITE);
16         this.setBorder(BorderFactory.createTitledBorder("Your Guess"));
17         
18         this.setLayout(null);
19         this.inputTxt = new JTextField();
20         this.inputTxt.setBounds(90, 33, 140,25);
21         this.add(this.inputTxt);
22     }
23 
24     public JTextField getInputTxt() {
25         return inputTxt;
26     }
27 
28     public void setInputTxt(JTextField inputTxt) {
29         this.inputTxt = inputTxt;
30     }
31 }



 1 package com.lovo.hilo;
 2 
 3 import java.awt.Color;
 4 import java.awt.FlowLayout;
 5 import java.awt.Font;
 6 
 7 import javax.swing.BorderFactory;
 8 import javax.swing.JLabel;
 9 import javax.swing.JPanel;
10 
11 public class MidPanel extends JPanel {
12     
13     private JLabel msgLab;
14     
15     public MidPanel(){
16         this.setBackground(Color.WHITE);
17         this.setLayout(new FlowLayout());
18         this.setBorder(BorderFactory.createTitledBorder("Hint"));
19         
20         this.msgLab = new JLabel("Let's Play HiLo");
21         this.msgLab.setFont(new Font("微软雅黑",Font.PLAIN,15));
22         this.add(this.msgLab);
23     }
24 
25     public JLabel getMsgLab() {
26         return msgLab;
27     }
28 
29     public void setMsgLab(JLabel msgLab) {
30         this.msgLab = msgLab;
31     }
32     
33 }
 1 package com.lovo.hilo;
 2 
 3 import java.awt.BorderLayout;
 4 import java.awt.Color;
 5 
 6 import javax.swing.JPanel;
 7 
 8 public class DownPanel extends JPanel {
 9     
10     private ButtonPanel btnP;
11     
12     public DownPanel(HiLoFrame frame){
13         this.setBackground(Color.WHITE);
14         this.setLayout(new BorderLayout());
15         
16         this.btnP = new ButtonPanel(frame);
17         this.add(this.btnP,BorderLayout.SOUTH);
18     }
19 
20     public ButtonPanel getBtnP() {
21         return btnP;
22     }
23 
24     public void setBtnP(ButtonPanel btnP) {
25         this.btnP = btnP;
26     }
27     
28 }

 1 package com.lovo.hilo;
 2 
 3 import java.awt.Button;
 4 import java.awt.Color;
 5 import java.awt.FlowLayout;
 6 import java.awt.event.ActionEvent;
 7 import java.awt.event.ActionListener;
 8 
 9 import javax.swing.JButton;
10 import javax.swing.JLabel;
11 import javax.swing.JPanel;
12 
13 public class ButtonPanel extends JPanel {
14     
15     private JButton enterBtn;
16     
17     private JButton replayBtn;
18     
19     private int i;
20     
21     private HiLoFrame frame;
22     
23     //匿名内部类中不能访问外部类的局部变量,只能访问全局变量或常量
24     //这里的形参是一个欺骗编译器的动作
25     public ButtonPanel( HiLoFrame frame){
26         this.frame=frame;
27         this.setBackground(Color.WHITE);
28         this.setLayout(new FlowLayout());
29         
30         this.enterBtn = new JButton("确定");
31         this.replayBtn = new JButton("重玩");
32         this.replayBtn.setEnabled(false);
33         this.enterBtn.setEnabled(true);
34         this.enterBtn.addActionListener(new ActionListener() {            
35             @Override
36             public void actionPerformed(ActionEvent e) {
37                 // TODO Auto-generated method stub
38                 //1、取得输入的整数
39                 String inputStr = ButtonPanel.this.frame.getUpP().getInputTxt().getText();
40                 JLabel msgLab =ButtonPanel.this. frame.getMdP().getMsgLab();
41                 //2、取得随机数
42                 int randomNum =ButtonPanel.this. frame.getRandomNum();
43                 String msg = "";
44                 if(inputStr.matches("[5-9][0-9]")){
45                     int inputNum = Integer.parseInt(inputStr);
46                     //3、比较                    
47                     if(inputNum > randomNum){
48                         msg = "不好意思,你猜大了!";
49                         msgLab.setText(msg+"你还有"+(6-i)+"次机会");
50                     }else if(inputNum < randomNum){
51                         msg = "不好意思,你猜小了!";
52                         msgLab.setText(msg+"你还有"+(6-i)+"次机会");
53                     }else{
54                         msg = "恭喜你猜对了!";
55                         msgLab.setText(msg);
56                             ButtonPanel.this.replayBtn.setEnabled(true);
57                             ButtonPanel.this.enterBtn.setEnabled(false);
58                             i=0;
59                     }
60                     
61                 }else{
62                     msg = "请输入50到99的有效数字!";
63                     msgLab.setText(msg+"你还有"+(7-i)+"次机会");
64                 }
65                 i++;
66                 
67                 if(i==7){
68                     ButtonPanel.this.replayBtn.setEnabled(true);
69                     ButtonPanel.this.enterBtn.setEnabled(false);
70                     i=0;
71                 }
72             }
73         });
74         
75         this.replayBtn.addActionListener(new ActionListener(){
76 
77             @Override
78             public void actionPerformed(ActionEvent e) {
79                 // TODO Auto-generated method stub
80                 ButtonPanel.this.frame.setRandomNum((int)(Math.random() * 50 + 50)); 
81                 ButtonPanel.this.replayBtn.setEnabled(false);
82                 ButtonPanel.this.enterBtn.setEnabled(true);
83                 i=0;
84                 System.out.println(ButtonPanel.this.frame.getRandomNum());
85             }
86             
87         });
88         this.add(this.enterBtn);
89         this.add(this.replayBtn);
90         
91     }
92     
93 }
 1 package com.lovo.test;
 2 
 3 
 4 import com.lovo.cardlayout.CardFrame;
 5 import com.lovo.event.ColorFrame;
 6 import com.lovo.frame.BorderFrame;
 7 import com.lovo.frame.FlowFrame;
 8 import com.lovo.frame.GridFrame;
 9 import com.lovo.frame.MyFrame;
10 import com.lovo.hilo.HiLoFrame;
11 import com.lovo.qq.QQFrame;
12 
13 public class TestMain {
14 
15     public static void main(String[] args) {
16         // TODO Auto-generated method stub
17 
18         new HiLoFrame();
19 
20     }
21 
22 }

 

 

  

posted @ 2016-06-19 14:59  薄灬荷  阅读(2191)  评论(0编辑  收藏  举报