📄 lucky52.java
字号:
/*
设计一个类似幸运52的游戏;此程序是借鉴网上的一些代码,
自己在通过仔细琢磨运用自己所学的知识编写而成得到的,
唯一美中不足的是布局,此处应该不用布局管理器,否则自
己定义的框架大小无法实现。
*/
import java.applet.*;
import java.awt.*;
import java.net.*;
import java.awt.event.*;
import java.awt.image.*;
import java.awt.Graphics;
import java.net.URL;
public class Lucky52 extends Applet implements ActionListener//此处一定要实现applet接口,否则下面无法实现本地图片加载
{
Frame f;
Panel pnlNorth;
MyImgPanel pnlCenter; //自定义一个面板
Panel pnlBottom;
TextField txtField; //定义
Label label; //定义标签
Button btnStart, btnOk,btnCancel,btnQuit; //定义按钮
private int truePrice=3250; //用于存放该商品对应的价格
public Lucky52() //构造函数
{
//各种组件开辟空间
f=new Frame("幸运52");
pnlNorth=new Panel();
pnlCenter=new MyImgPanel();//图片的显示
pnlBottom=new Panel();
txtField=new TextField(10);
label=new Label("请输入你对商品价格的估计:");
//创建功能按钮
btnStart=new Button("start");
btnOk=new Button("ok");
btnCancel=new Button("cancel");
btnQuit=new Button("quit");
}
public void launchFrame()
{
//f.setResizable(false);
f.setBounds(160,60,360,300);
f.setLayout(new BorderLayout()); //设置为边界布局管理器
pnlNorth.add(label);//将标签添加到pnlNorth面板中
pnlNorth.add(txtField);//将文本框添加到pnlNorth面板中
f.add(pnlNorth,BorderLayout.NORTH);//设置pnlNorth的位置
f.add(pnlCenter,BorderLayout.CENTER);//设置pnlCenter的位置
//给功能按钮添加事件监听器
btnStart.addActionListener(this);
btnOk.addActionListener(this);
; btnCancel.addActionListener(this);
btnQuit.addActionListener(this);
//对窗口事件进行监听 ( 关闭窗体事件 )
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);}});
//把功能按钮加入到Panel组件中,并显示
pnlBottom.add(btnStart);
pnlBottom.add(btnOk);
pnlBottom.add(btnCancel);
pnlBottom.add(btnQuit);
f.add(pnlBottom,BorderLayout.SOUTH);//设置pnlBottom的位置
f.setBackground(Color.white);//设置Frame背景色为白色
//显示框架窗口
f.pack();
f.setVisible(true);
}
/*
实现各种按钮的功能
*/
public void actionPerformed(ActionEvent evt)
{
if(evt.getActionCommand().equals("start"))
{
pnlCenter.initImg();
label.setText("请输入你对商品价格的估计:");
pnlCenter.repaint();//强制awt重绘面板
}
else if(evt.getActionCommand().equals("ok"))
{
int guessPrice=0;
try
{
guessPrice=Integer.parseInt(txtField.getText().trim());
String guess=comparePrice(guessPrice);
new MsgDlg(guess);
}
catch(Exception e)
{
e.printStackTrace();
}
}
else if(evt.getActionCommand().equals("cancel"))
{
txtField.setText(""); //文本框置空
}
else if(evt.getActionCommand().equals("quit"))
{
System.exit(0); //退出窗体
}
}
public String comparePrice(int guessPrice)
{
if(guessPrice==truePrice)
{
return "猜对了,恭喜你!";
}
else if(guessPrice>truePrice)
{
return "猜的价格过高,请重新猜!";
}
else if(guessPrice<truePrice)
{
return "猜的价格过低,请再加价!";
}
return "出错了!";
}
/*
在面板上加载一张本地图片
*/
private class MyImgPanel extends Applet
{
String fileName="A95.jpg";
Image myImage;
public void initImg()
{
URL url=null;
try
{
url=Class.forName("Lucky52").getResource("A95.jpg");//得到图像
}
catch(Exception e){}
myImage=getToolkit().getImage(url);//得到一个Toolit对象并由其负责取对象
MediaTracker myTracker=new MediaTracker(this); //实例化媒体装载器
myTracker.addImage(myImage,1);//将图片添加到媒体装载器中
try{
myTracker.wait();
myTracker.checkAll();
}
catch(Exception e){}
}
public void paint(Graphics g)
{
g.drawImage(myImage,135,30,55,75,this);// 绘制图片
}
}
/*
功能:弹出窗口
*/
private class MsgDlg extends Frame implements ActionListener
{
Label label=new Label();
public MsgDlg(String strMsg)
{
super("猜测结果显示");
Panel myPanel=new Panel();
add(myPanel);
myPanel.add(label);
label.setText(strMsg);//
setSize(200,100);
setLocation(300,200);
Button btnOk=new Button("确定");
btnOk.addActionListener(this);
myPanel.add(btnOk);
setVisible(true);
}
public void actionPerformed(ActionEvent evt)
{
this.dispose();
}
}
/*
mian函数
*/
public static void main(String args[])
{
Lucky52 cc=new Lucky52();
cc.launchFrame();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -