Copyleft:munz import import import import java.awt.*; javax.swing.*; java.util.*; java.awt.event.*; public class Oberflaeche extends JFrame { public Steuerung dieSteuerung = new Steuerung(); public Oberflaeche() { getContentPane().add(new MyContainer(dieSteuerung)); setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); } public static void main(String[] args) { // Start der Anwendung mit main Oberflaeche dieOberflaeche = new Oberflaeche(); dieOberflaeche.setSize(600,400); dieOberflaeche.setTitle("Elektronikschrott Conrad @Conrad.de"); dieOberflaeche.setVisible(true); } } class MyContainer extends Container { // Ein Container nimmt die einzelnen Panele auf public MyContainer(Steuerung steu){ setLayout(new BorderLayout(3,3)); NordPanel nord = new NordPanel(steu); SuedPanel sued = new SuedPanel(steu); add(nord, BorderLayout.NORTH ); add(new OstPanel(steu,nord,sued), BorderLayout.EAST ); add(new MittePanel(steu), BorderLayout.CENTER ); add(sued, BorderLayout.SOUTH ); } } class NordPanel extends JPanel { private JTextField dasGeldFeld = new JTextField(5); private JButton derEinwurfButton = new JButton("Bestätigen"); private JLabel dasKassenLabel = new JLabel("0 Cent"); private Steuerung dieSteuerung; // dauerhafte Verbindung zur Steuerung public NordPanel(Steuerung steu) { setBackground(Color.white); setLayout(new FlowLayout()); add(new JLabel("Geldeinwurf:")); add(dasGeldFeld); add(derEinwurfButton); add(new JLabel("Ihr Guthaben: ")); add(dasKassenLabel); dieSteuerung = steu; derEinwurfButton.addMouseListener(new java.awt.event.MouseAdapter() { public void mousePressed(MouseEvent e) { int g = Integer.parseInt(dasGeldFeld.getText()); dasKassenLabel.setText(dieSteuerung.einzahlen(g)+" Cent"); } 1 Copyleft:munz }); } public void anzeigenKasse() { dasKassenLabel.setText(dieSteuerung.getKasse()+" Cent"); } } class OstPanel extends JPanel { private JLabel dasProduktLabel = new JLabel("Noch nichts!"); private Steuerung dieSteuerung; private NordPanel dasNordPanel; private SuedPanel dasSuedPanel; public OstPanel(Steuerung steu, NordPanel nord, SuedPanel sued) { JButton tmp; setBackground(Color.white); dieSteuerung = steu; dasNordPanel = nord; dasSuedPanel = sued; setLayout(new BoxLayout(this, BoxLayout.Y_AXIS)); add(Box.createVerticalStrut(20)); tmp = new JButton("" + 0); add (tmp); tmp.addMouseListener(new java.awt.event.MouseAdapter() { public void mousePressed(MouseEvent e) { klickProdukt(0); } }); add(Box.createVerticalStrut(20)); tmp = new JButton("" + 1); add (tmp); tmp.addMouseListener(new java.awt.event.MouseAdapter() { public void mousePressed(MouseEvent e) { klickProdukt(1); } }); add(Box.createVerticalStrut(20)); tmp = new JButton("" + 2); add (tmp); tmp.addMouseListener(new java.awt.event.MouseAdapter() { public void mousePressed(MouseEvent e) { klickProdukt(2); } }); add(Box.createVerticalStrut(20)); tmp = new JButton("" + 3); add (tmp); tmp.addMouseListener(new java.awt.event.MouseAdapter() { public void mousePressed(MouseEvent e) { klickProdukt(3); } }); 2 Copyleft:munz add(Box.createVerticalGlue()); add(dasProduktLabel); } private void klickProdukt(int i) { int n = dieSteuerung.verkaufe(i); if (n < 0) dasProduktLabel.setText("Es fehlen "+-n+" Cent"); else { dasSuedPanel.ausgeben(); dasProduktLabel.setText("Wir bedanken uns!"); } dasNordPanel.anzeigenKasse(); } } class MittePanel extends JPanel { public JTextArea dieTextArea = new JTextArea(8,20); public MittePanel(Steuerung steu) { String s[]= new String[4]; setBackground(Color.white); setLayout(new FlowLayout()); add(dieTextArea); dieTextArea.append("Uebersicht unserer Angebote\n\n\n\n"); steu.init(s); for (int i=0;i<s.length;i++) dieTextArea.append(i + " " +s[i]+"Cent\t" +" \n"); } } class SuedPanel extends JPanel { public JTextArea dieAusgabeArea = new JTextArea(8,20); private Steuerung dieSteuerung; public SuedPanel(Steuerung steu) { setBackground(Color.white); setLayout(new FlowLayout()); dieSteuerung = steu; add(dieAusgabeArea); dieAusgabeArea.append("Wechselgeld:"); } public void ausgeben() { String s[]= new String[8]; dieSteuerung.ausgebenWechselgeld(s); dieAusgabeArea.setText("Wechselgeld: \n"); int i=0; while (s[i]!=null) dieAusgabeArea.append(s[i++]+"\n"); } } __________________________________________________public class Steuerung { private String warenName[]={"Transistoren","Operationsverstaerker","Schottky Dioden","Spulen"}; private int warenPreis[]={100,90,200,35}; private int kasse; public void init(String s[]) { 3 Copyleft:munz int i; for (i=0;i<warenName.length;i++) { s[i]=warenName[i]+ " : } " +warenPreis[i]; } public int einzahlen(int g) { return kasse += g; } public int getKasse() { return kasse; } public void ausgebenWechselgeld(String s[]) { int mWerte[]={1,2,5,10,20,50,100,200}; String mNamen[]={"1 Cent","2 Cent","5 Cent","10 Cent","20 Cent","50 Cent","1 Euro","2 Euro"}; int i,a,j=0; i=7; while (kasse>0) { a=kasse/mWerte[i]; if (a>0) s[j++]=a+ " * "+mNamen[i]; kasse=kasse%mWerte[i]; i--; } } public int verkaufe(int w) { if (kasse>=warenPreis[w]) return kasse -= warenPreis[w]; return kasse-warenPreis[w]; } } 4