📄 myticketsale.java
字号:
import java.applet.*;
import java.awt.*;
import java.util.*;
class clock2 implements Runnable //时钟线程
{
Date m_date;
Thread m_runner=null;
TextField gr;
TextField gt;
public clock2(TextField r,TextField t) // r提取日期、 t提取时间
{
gr=r;
gt=t;
if(m_runner==null)
{
m_runner=new Thread(this);
m_runner.start();
}
}
public void stop()
{
if (m_runner != null)
{
m_runner.stop();
m_runner = null;
}
}
public void run()
{
while(true)
{
m_date=new Date();
String temp1=new String("日期:"+String.valueOf(1+m_date.getMonth())+"/"+String.valueOf(m_date.getDate())+"/"+String.valueOf(1900+m_date.getYear()));
String temp2=new String("时间:"+String.valueOf(m_date.getHours())+":"+String.valueOf(m_date.getMinutes())+":"+String.valueOf(m_date.getSeconds()));
gr.setText(temp1);
gt.setText(temp2);
try{
Thread.sleep(1000);
}
catch(InterruptedException e){}
}
}
}
public class MyTicketSale extends Applet implements Runnable //主程序开端
{
private Thread m_TicketSale = null;
private Graphics m_Graphics;
private Image m_Images[];
private int m_nCurrImage=0;
private boolean m_fAllLoaded = false;
private final int NUM_IMAGES =9;
TextField TextField1,TextField2;
clock2 pp;
private boolean m_fStandAlone = false;
TextField tRemain,tSold,tTotal;
int remain=200;
int sold=0;
int total=0;
Button mybutton;
Dimension butd;
AudioClip audio; //audio为AudioClip对象
public void init()
{
resize(1024,600); //规定页面大小
setBackground(Color.pink);
setFont(new Font("TimesRoman",Font.BOLD,10));
setLayout(null);
addSeat(); //画座号
TextField1=new TextField();
TextField2=new TextField();
add(TextField1);
add(TextField2);
TextField1.setFont(new Font("TimesRoman",Font.BOLD,15));
TextField2.setFont(new Font("TimesRoman",Font.BOLD,15));
TextField1.reshape(600,10,150,30);
TextField2.reshape(600,60,150,30);
pp=new clock2(TextField1,TextField2); //日期和时钟
tRemain=new TextField(Integer.toString(remain)+"张",10);
tRemain.setEditable(false);
add(tRemain);
tRemain.setFont(new Font("TimesRoman",Font.BOLD,15));
tRemain.reshape(400,160,80,20);
tSold=new TextField(Integer.toString(sold)+"张",10);
tSold.setEditable(false);
tSold.setFont(new Font("TimesRoman",Font.BOLD,15));
add(tSold);
tSold.reshape(100,160,80,20);
tTotal=new TextField(Integer.toString(total)+"元",10);
tTotal.setEditable(false);
add(tTotal);
tTotal.setFont(new Font("TimesRoman",Font.BOLD,15));
tTotal.reshape(640,160,80,30);
m_Graphics = getGraphics();
TextField myTextField1=new TextField("今日电影:"); myTextField1.setForeground(Color.red);
myTextField1.setFont(new Font("TimesRoman",Font.BOLD,20));
add(myTextField1);
myTextField1.reshape(300,10,150,30);
TextField myTextField2=new TextField("大话西游"); myTextField2.setForeground(Color.blue);
myTextField2.setFont(new Font("TimesRoman",Font.BOLD,30));
add(myTextField2);
myTextField2.reshape(300,60,150,40);
TextField myTextField3=new TextField("售出票:");
myTextField3.setFont(new Font("TimesRoman",Font.BOLD,15));
add(myTextField3);
myTextField3.reshape(10,160,80,20);
TextField myTextField4=new TextField("剩余票:");
myTextField4.setFont(new Font("TimesRoman",Font.BOLD,15));
add(myTextField4);
myTextField4.reshape(300,160,80,20);
TextField myTextField5=new TextField("总金额:");
myTextField5.setFont(new Font("TimesRoman",Font.BOLD,15));
add(myTextField5);
myTextField5.reshape(550,160,80,20);
TextField myTextField6=new TextField("票价:1--3排 10元;4--6排 5元;7--10排 2元");
myTextField6.setForeground(Color.blue);
myTextField6.setFont(new Font("TimesRoman",Font.BOLD,15));
add(myTextField6);
myTextField6.reshape(5,195,500,20);
audio=getAudioClip(getCodeBase(),"spacemusic.au") ;
}
public void addSeat()
{
int xx,yy;
for(int i=1;i<=10;i++)
{
yy=230+35*(i-1);
for(int j=1;j<=20;j++)
{
xx=50*(j-1);
Button mybutton=new Button(Integer.toString(i)+"排"+
Integer.toString(j)+"列");
add(mybutton);
mybutton.show();
mybutton.move(xx,yy);
mybutton.resize(50,30);
}
}
}
public void destroy()
{ audio.stop();
pp.stop();
}
private void displayImage(Graphics g)
{
if (!m_fAllLoaded)
return;
g.drawImage(m_Images[m_nCurrImage],1,1,200,150, null); //放动画
}
public void paint(Graphics g)
{
if (m_fAllLoaded)
{
displayImage(g);
}
else
g.drawString("Loading images...", 10, 20);
}
public boolean action(Event evt, Object arg)
{
int price=0;
if (evt.target instanceof Button)
{
Button btn = (Button)evt.target;
String label3 = btn.getLabel();
switch(label3.charAt(0)) //设定价格
{
case '1': {if (label3.charAt(1)=='0')
{price=2;}
else
price=10;} break;
case '2': price=10; break;
case '3': price=10; break;
case '4': price=5; break;
case '5': price=5; break;
case '6': price=5; break;
case '7': price=2; break;
case '8': price=2; break;
case '9': price=2; break;
default: return false;
}
btn.setLabel("已售出"); //标明卖出
btn.disable();
remain--;
sold++;
total+=price;
tRemain.setText(Integer.toString(remain)+"张");
tSold.setText(Integer.toString(sold)+"张");
tTotal.setText(Integer.toString(total)+"元");
}
return true;
}
public void start()
{ audio.loop();
if (m_TicketSale == null)
{
m_TicketSale = new Thread(this);
m_TicketSale.start();
}
}
public void stop()
{
if (m_TicketSale != null)
{
m_TicketSale.stop();
m_TicketSale = null;
}
}
public void run()
{
m_nCurrImage = 0;
if (!m_fAllLoaded)
{
repaint();
m_Images = new Image[NUM_IMAGES];
MediaTracker tracker = new MediaTracker(this);
String strImage;
for (int i = 1; i <= NUM_IMAGES; i++)
{
strImage = "images/movie" + ((i < 10) ? "0" : "") + i + ".jpg";
if (m_fStandAlone)
m_Images[i-1] = Toolkit.getDefaultToolkit().getImage(strImage);
else
m_Images[i-1] = getImage(getDocumentBase(), strImage);
tracker.addImage(m_Images[i-1], 0);
}
try
{
tracker.waitForAll();
m_fAllLoaded = !tracker.isErrorAny();
}
catch (InterruptedException e)
{
stop();
}
if (!m_fAllLoaded)
{
stop();
m_Graphics.drawString("Error loading images!", 10, 10);
return;
}
}
repaint();
while (true)
{
try
{
displayImage(m_Graphics);
m_nCurrImage++;
if (m_nCurrImage == NUM_IMAGES)
m_nCurrImage = 0;
Thread.sleep(3000);
}
catch (InterruptedException e)
{
stop();
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -