import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.util.*;
public class MyCarPark extends JFrame implements ActionListener {
static MyCarPark pp=null;
Image imageCar=null;
MenuBar menubar=new MenuBar();
Menu file=new Menu("File",true);
Menu help=new Menu("help",true);
Button pause=new Button("Pause");
Button resume=new Button("Resume");
TextField Enter=new TextField(4);
TextField Left=new TextField(4);
TextField Space=new TextField(4);
Label Lenter=new Label("Total car entered:");
Label Lleft=new Label("Total car left:");
Label Lspace=new Label("Available space:");
JLabel Car;
private final String imgePath = "Image.jpg";
private final String Carimage="Car.jpg";
private JPanel pane;
JLabel label[]=new JLabel[60];
Panel panel2[]=new Panel[60];
int full[]=new int[60];
int NumLeft=0;
int NumEnter=0;
CarEntrance ThreadEnter;
CarExit ThreadLeft;
public MyCarPark(String title) throws HeadlessException {
super(title);
init();
setSize(1024,768);
setVisible(true);
}
private void init() {
int i=0;
final Image img = Toolkit.getDefaultToolkit().createImage(imgePath);
imageCar = Toolkit.getDefaultToolkit().createImage(Carimage);
pane = new JPanel(){
protected void paintChildren(Graphics g) {
g.drawImage(img,0,0,this);
super.paintChildren(g);
}
};
setLayout(null);
for(i=0;i<12;i++)
{
panel2[i]=new Panel();
label[i] = new JLabel(new ImageIcon(imageCar));
panel2[i].add(label[i]);
this.add(panel2[i]);
panel2[i].setBounds(120,89+i*38,50,40);
panel2[i].setVisible(false);
}
for(i=12;i<24;i++)
{
panel2[i]=new Panel();
label[i] = new JLabel(new ImageIcon(imageCar));
panel2[i].add(label[i]);
this.add(panel2[i]);
panel2[i].setBounds(355,89+(i-12)*38,50,40);
panel2[i].setVisible(false);
}
for(i=24;i<36;i++)
{
panel2[i]=new Panel();
label[i] = new JLabel(new ImageIcon(imageCar));
panel2[i].add(label[i]);
this.add(panel2[i]);
panel2[i].setBounds(420,89+(i-24)*38,50,40);
panel2[i].setVisible(false);
}
for(i=36;i<48;i++)
{
panel2[i]=new Panel();
label[i] = new JLabel(new ImageIcon(imageCar));
panel2[i].add(label[i]);
this.add(panel2[i]);
panel2[i].setBounds(620,89+(i-36)*38,50,40);
panel2[i].setVisible(false);
}
for(i=48;i<60;i++)
{
panel2[i]=new Panel();
label[i] = new JLabel(new ImageIcon(imageCar));
panel2[i].add(label[i]);
this.add(panel2[i]);
panel2[i].setBounds(690,89+(i-48)*38,50,40);
panel2[i].setVisible(false);
}
for(i=0;i<60;i++)
full[i]=0;
//Add menubar and menu items, addd listeners for menu items
setMenuBar(menubar);
menubar.add(file);
menubar.add(help);
file.add("New");
file.add("Option");
file.add("Exit");
help.add("How to use");
help.add("About");
//Add buttons and listeners for the buttons
Panel panel1=new Panel();
panel1.add(pause);
panel1.add(resume);
pause.addActionListener(this);
resume.addActionListener(this);
this.add(panel1);
this.add(Lenter);
this.add(Enter);
this.add(Lleft);
this.add(Left);
this.add(Lspace);
this.add(Space);
Lenter.setBounds(80,653,100,15);
Enter.setBounds(182,652,100,20);
Lleft.setBounds(354,653,75,15);
Left.setBounds(431,652,100,20);
Lspace.setBounds(610,653,100,15);
Space.setBounds(710,652,100,20);
pane.setBounds(0,0,856,643);
panel1.setBounds(860,80,130,100);
getContentPane().add(pane);
}
class How extends Dialog implements ActionListener
{
Button btn1=new Button("OK");
Font f=new Font("Monospaced" ,Font.BOLD,16);
JLabel jlb = new JLabel();
public How()
{
super(pp,true);
setSize(600,400);
this.setLocation(200,140);
setTitle("How to use...");
setLayout(null);
jlb.setFont(f);
jlb.setText("<html>To start the simulation ,an user must click \"New\" in \"File\" The user may click the button \"Pause\" to pause the simulation or \"Resume\" button to resume the simulation. The user can change sleeping times for two simulators for car entrance and exit the car-park.</html>");
add(jlb);
add(btn1);
jlb.setBounds(35,50,530,250);
jlb.setBackground(Color.white);
btn1.setBounds(260,330,70,35);
setResizable(false);
btn1.addActionListener(this);
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
dispose();
}
});
this.setVisible(true);
}
public void actionPerformed(ActionEvent e){
if(e.getSource() == btn1)
dispose();
}
}
class CarEntrance extends Thread{
Random r=new Random();
int timeEnter=2000;
int x=0;
int y=0;
int n=0;
int z=0;
int flag=0;
boolean b = true;
String str=new String("0");
public CarEntrance(String str){
super(str);
}
public void run(){
while(true&&b){
str=""+(60-(NumEnter-NumLeft));
Space.setText(str);
str=""+NumEnter;
Enter.setText(str);
x=r.nextInt(10);
if(x>=5)
{
if(x==9)
{
y=r.nextInt(10);
n = y/2 + (y/2)*12;
panel2[n].setVisible(true);
NumEnter++;
str=""+NumEnter;
Enter.setText(str);
str=""+(60-(NumEnter-NumLeft));
Space.setText(str);
full[n]=1;
}
else if(x<9)
{
while(flag==0){
z=r.nextInt(60);
if(full[z]==0)
{full[z]=1;
panel2[z].setVisible(true);
NumEnter++;
str=""+NumEnter;
Enter.setText(str);
str=""+(60-(NumEnter-NumLeft));
Space.setText(str);
评论0