import java.awt.*; import javax.swing.*; import java.util.*; import java.awt.event.*; /** * Title: spider - SpiderBox * Description: Projekt zur Einfuehrung der Objektorientierten Programmierung * Copyright: Copyright (c) 2003 * Company: MezMedia * @author Oliver Mezger * @version 4.1 */ public class SpiderBox extends JFrame { MyPanel mPan = new MyPanel(); public SpiderBox() { getContentPane().add(mPan); addWindowListener(new WindowAdapter(){ // Objekt soll beendet werden kšnnen public void windowClosing(WindowEvent e) { System.exit(0); } }); } } class MyPanel extends JPanel implements Runnable { private Vector scene; private long clk = 0; private long uptim = 0; private boolean morelive = false; JLabel versi = new JLabel("Spider 4.1 (c) MezMedia"); JButton exit = new JButton("Exit"); public MyPanel(){ setBackground(Color.yellow); setLayout(new FlowLayout()); add(versi); add(exit); exit.addMouseListener(new java.awt.event.MouseAdapter() { public void mouseClicked(MouseEvent e) { System.exit(0); } }); addMouseListener(new java.awt.event.MouseAdapter() { public void mousePressed(MouseEvent e) { canvas_mousePressed(e); } }); scene = new Vector(); scene.addElement(new Spider(100,100,40,0.5,0.5)); scene.addElement( new Spider(200,200,40,0.5,0.5)); Thread liveDaemon = new Thread(this); liveDaemon.start(); } public void paintComponent(Graphics g) { super.paintComponent(g); Enumeration enum = scene.elements(); while (enum.hasMoreElements()){ Spider s = (Spider) enum.nextElement(); s.malen(g); } g.drawString("Uptime: "+uptim,g.getClipBounds().width-150,30); if (morelive){ scene.addElement(new Spider((int)(g.getClipBounds().width*Math.random()), (int)(g.getClipBounds().height*Math.random()), (int)(30*Math.random()+20), Math.random(), Math.random())); morelive=false; } } public void canvas_mousePressed(MouseEvent e) { int x=e.getX(); int y=e.getY(); scene.addElement(new Spider(x,y,x/10,Math.random(),Math.random())); } public void run() { long temp; while (true){ Enumeration enum = scene.elements(); while (enum.hasMoreElements()){ Spider s = (Spider) enum.nextElement(); s.live(scene); } temp = new Date().getTime(); if (temp > clk+1000){ uptim++; clk = temp; if (uptim % 20 ==0)morelive=true; } repaint(); try { Thread.sleep (120); } catch (InterruptedException ex){ } } } }