// Geschrieben von Tobias Barth, Frank Kammer import java.awt.*; import java.lang.*; import java.util.*; /* Die Klasse Sparschwein ist die Hauptklasse des Projekts. Sie ist abgeleitet von der Klasse Frame, und macht auch das Fenster mit dem Sparschwein drin auf. Sparschwein implementiert den GeldstueckListener, um mit der Methode GeldstueckEingeworfen signalisiert zu kriegen, wenn ein Geldstueck in den Schlitz geworfen wird. Der MouseListener wird implementiert, weil links und rechts neben dem Schwein Dollarzeichen angezeigt werden, die anklickbar sind. Wenn diese angekclickt werden, beschwert sich das Schwein (der Schlitz vom Schwein) in der Java-Konsole, dass er das nicht haben will. */ public class Sparschwein extends Frame implements GeldstueckListener, MouseListener{ static double inhalt=0.00; static double volumen=0; static double max_vol=4000; static Sparschwein sparschwein; static java.awt.Label wertlabel; static boolean dollarflag=false; static Imagecanvas voll1,voll2; /* Der Schlitz wird immer aufgerufen, wenn dem Sparschwein signalisiert wird, dass etwas in es reingeworfen wird. Der Schlitz entscheidet dann ob das Reingeworfene ein Geldstueck ist, wenn ja, laesst er es rein und addiert den Wert und das Volumen des Geldstuecks zum Inhalt des Sparschweins dazu. */ public static void schlitz(java.lang.Object ding){ Geldstueck geldstueck; String name=ding.getClass().getName(); // System.out.println(name); if (name.equals("Geldstueck")) { geldstueck = (Geldstueck) ding; volumen=volumen+geldstueck.volumen; if (volumen>max_vol) { volumen=volumen-geldstueck.volumen; if (!dollarflag){ //Dollarzeichen anzeigen und anclickbar machen voll1=new Imagecanvas(Toolkit.getDefaultToolkit().getImage("dollarzeichen.gif"),0,200,75,80); sparschwein.add(voll1); voll1.addMouseListener(sparschwein); voll2=new Imagecanvas(Toolkit.getDefaultToolkit().getImage("dollarzeichen.gif"),324,200,75,80); sparschwein.add(voll2); voll2.addMouseListener(sparschwein); dollarflag=true; } System.out.println("Das passt nicht mehr rein."); } else { inhalt=inhalt+geldstueck.wert; System.out.println("Geldstueck eingeworfen."); } wertlabel.setText(java.lang.String.valueOf(inhalt)); sparschwein.repaint(); } else { System.out.println("Das will ich nicht."); } } /* getsparschwein instanziiert die Klasse Sparschwein und setzt die Parameter dieses Frames */ public static Sparschwein getsparschwein(){ sparschwein = new Sparschwein(); sparschwein.setTitle("Sparschwein"); sparschwein.setBackground(new java.awt.Color(255, 255, 255)); sparschwein.reshape(100, 100, 400, 400); sparschwein.setResizable(false); return(sparschwein); } /* GeldstueckEingeworfen wird vom Geldstueck aufgerufen, wenn das Geldstueck angeklickt wurde. */ public void GeldstueckEingeworfen(Geldstueck ding){ schlitz(ding); }; /* mousePressed wird vom Imagecanvas voll1 oder voll2 aufgerufen, wenn ein Dollarzeichen angeklickt wurde. */ public void mousePressed(java.lang.Object caller){ schlitz(caller); } /* handleEvent wird benoetigt, um den Befehl zum Schliessen des Fensters abzufangen und das Programm zu beenden */ public boolean handleEvent(Event event) { if (event.id == Event.WINDOW_DESTROY) { System.exit(0); } return super.handleEvent(event); } /* main kuemmert sich darum, das das Programm initialisiert wird. Es instanziiert einige Geldstuecke und das Imagecanvas Schweinbild. Zusaetzlich dazu laesst es von getsparschwein eine Instanz von Sparschwein anlegen, in die es die Geldstuecke (genauer: deren Instanzen von Imagecanvas) und das Schweinbild einfuegt. Dann fuehrt es die Instanz von Sparschwein aus. */ public static void main (java.lang.String[] arg){ Geldstueck mark1; Geldstueck mark2; Geldstueck mark10; Geldstueck mark20; Geldstueck mark50; Geldstueck mark100; Imagecanvas Schweinbild; wertlabel=new java.awt.Label("0"); // System.out.println("70"); sparschwein=sparschwein.getsparschwein(); // System.out.println("72"); mark1=new Geldstueck(1.0,31,0,24,100,100,"1DM.jpg",(GeldstueckListener) sparschwein); mark2=new Geldstueck(2.0,35,100,24,100,100,"2DM.jpg",(GeldstueckListener) sparschwein); mark10=new Geldstueck(10.0,45,200,24,100,50,"10DM.jpg",(GeldstueckListener) sparschwein); mark20=new Geldstueck(20.0,50,200,24+50,100,50,"20DM.jpg",(GeldstueckListener) sparschwein); mark50=new Geldstueck(50.0,55,300,24,100,50,"50DM.jpg",(GeldstueckListener) sparschwein); mark100=new Geldstueck(100.0,60,300,24+50,100,50,"100DM.jpg",(GeldstueckListener) sparschwein); sparschwein.setLayout(null); // System.out.println("80"); sparschwein.add(mark1.getimagecanvas()); sparschwein.add(mark2.getimagecanvas()); sparschwein.add(mark10.getimagecanvas()); sparschwein.add(mark20.getimagecanvas()); sparschwein.add(mark50.getimagecanvas()); sparschwein.add(mark100.getimagecanvas()); wertlabel.reshape(207,207,70,50); wertlabel.setAlignment(Label.CENTER); wertlabel.setBackground(new Color(255,203,153)); wertlabel.setFont(new Font("Arial",java.awt.Font.PLAIN,23)); sparschwein.add(wertlabel); // System.out.println("94"); mark1.getimagecanvas().addMouseListener(mark1); mark2.getimagecanvas().addMouseListener(mark2); mark10.getimagecanvas().addMouseListener(mark10); mark20.getimagecanvas().addMouseListener(mark20); mark50.getimagecanvas().addMouseListener(mark50); mark100.getimagecanvas().addMouseListener(mark100); Schweinbild = new Imagecanvas(Toolkit.getDefaultToolkit().getImage("Schwein.jpg"),100,150,200,167); sparschwein.add(Schweinbild); sparschwein.validate(); // System.out.println("106"); sparschwein.show(); } }