| /* ============================================================* PROJEKT: SWING- TASCHENRECHNER IN JAVA PROGRAMMIERT
 *
 * PROJEKTDAUER: 03.12.03 - 11.12.03
 *
 * ERSTELLER: LUTZ ALTHANS MEDIENINFORMATIKERGRUPPE 21430202
 * ============================================================
 */
 //package Projekt_1; import java.awt.*;import java.awt.event.*;
 import javax.swing.*;
 import java.io.*;
 public class Pro_5 {
  public static 
        void main(String[] args){ new MyJFrame1();
 }
 } //class
 class MyJFrame1 extends JFrame {
 //--------------------------------------------------------------------------
 /////////////// DEKLARATION /////////////////////////////////////////
 //--------------------------------------------------------------------------
 JScrollPane sp;
 Image image; //Hintergrundimage
 String Eingabe = ""; //Textareavariable
 String operator = ""; //Operator
 double eingabe =0.0; //Variable, die den Rechenweg speichert
 double erg = 0.0;
 boolean minus =false; //Operatorenerkennung am Anfang einer Rechenoperation
 boolean plus =false; //Operatorenerkennung am Anfang einer Rechenoperation
 boolean mal =false; //Operatorenerkennung am Anfang einer Rechenoperation
 boolean teil =false; //Operatorenerkennung am Anfang einer Rechenoperation
 boolean proz =false; //Operatorenerkennung am Anfang einer Rechenoperation
  String speicher 
        =""; //Endspeicher für Schreiben in DateiString bildpfad =("D:/Gast/Java_becker/Java_Uebungen/Projekt_1/");
 // Alternativpfad
 //String bildpfad =("C:/Dokumente und Einstellungen/gast/Desktop");
  JComboBox cop;JComboBox cop1,cop2;
 String[] coptext1 = {"metal_calc","gruen","rot","gelb","matrix"};
 String[] coptext2 = {"toolz","Hilfe","speichern","quit"};
 HGPanel hgp;
 JTextArea tf1; //Anzeige des Rechners
 JButton b1,b2,b3,b4,b5,b6,b7,b8,b9,b0,bmal,bteil,bplus,bminus,berg,breset,bproz,bkomma;
 String a;//Protokoll für datei
 MyJFrameHilfe fhilfe; //externes Hilfeframe
 Container cp = getContentPane();
 public MyJFrame1(){
 super("Rechner 1");
  setBounds(500,110,500,800);setDefaultCloseOperation(EXIT_ON_CLOSE);
  //----------------------------------------------------------------------////////////// INITIALISIERUNG ////////////////////////////////////
 //----------------------------------------------------------------------
  b1 = new JButton(new 
        ImageIcon(Pro_5.class.getResource("b1.jpg")));b2 = new JButton(new ImageIcon(Pro_5.class.getResource("b2.jpg")));
 b3 = new JButton(new ImageIcon(Pro_5.class.getResource("b3.jpg")));
 b4 = new JButton(new ImageIcon(Pro_5.class.getResource("b4.jpg")));
 b5 = new JButton(new ImageIcon(Pro_5.class.getResource("b5.jpg")));
 b6 = new JButton(new ImageIcon(Pro_5.class.getResource("b6.jpg")));
 b7 = new JButton(new ImageIcon(Pro_5.class.getResource("b7.jpg")));
 b8 = new JButton(new ImageIcon(Pro_5.class.getResource("b8.jpg")));
 b9 = new JButton(new ImageIcon(Pro_5.class.getResource("b9.jpg")));
 b0 = new JButton(new ImageIcon(Pro_5.class.getResource("b0.jpg")));
  bplus = new 
        JButton(new ImageIcon(Pro_5.class.getResource("bplus.jpg")));bminus = new JButton(new ImageIcon(Pro_5.class.getResource("bminus.jpg")));
 bmal = new JButton(new ImageIcon(Pro_5.class.getResource("bmal.jpg")));
 bteil = new JButton(new ImageIcon(Pro_5.class.getResource("bteil.jpg")));
 bproz = new JButton(new ImageIcon(Pro_5.class.getResource("bproz.jpg")));
 breset = new JButton(new ImageIcon(Pro_5.class.getResource("breset.jpg")));
 berg = new JButton(new ImageIcon(Pro_5.class.getResource("berg.jpg")));
 //bkomma = new JButton(new ImageIcon(Pro_5.class.getResource("bkomma.jpg")));
  repaint();cop1 = new JComboBox(coptext1);
 cop2 = new JComboBox(coptext2);
  //----------------------------------------------------------------------///////////// EREIGNISBEHANDLUNG DER COMBOBOXEN /////////////////////
 //----------------------------------------------------------------------
 cop1.addItemListener(new ItemListener(){
 public void itemStateChanged(ItemEvent e){
  JComboBox selectedChoice 
        = (JComboBox)e.getSource();hgp.setImage(selectedChoice.getSelectedIndex());
 validate();
 repaint();
 }
 });
  cop2.addActionListener(new 
        ActionListener(){public void actionPerformed(ActionEvent e){
 JComboBox selectedChoice = (JComboBox)e.getSource();
 if (selectedChoice.getSelectedItem().equals("toolz")){
 System.out.println("toolz");
  }if (selectedChoice.getSelectedIndex()==1){
 System.out.println("hilfe "+fhilfe);
 if(fhilfe==null || fhilfe.isVisible()==false)
 fhilfe = new MyJFrameHilfe();
 cop2.setSelectedIndex(0);
 }
 if (selectedChoice.getSelectedItem().equals("speichern")){
 System.out.println("speichern");
 //InDateiSchreiben("D:/Gast/Java_becker/Java_Uebungen/IO/datei1");
 // Alternativpfad
 InDateiSchreiben("D:/Gast/Java_becker/Java_Uebungen/Projekt_1/datei1");
 }
 if (selectedChoice.getSelectedItem().equals("quit")){
 System.out.println("quit");
 System.exit(0);
 }
 }
  });  b1.setBorder(BorderFactory.createRaisedBevelBorder());b2.setBorder(BorderFactory.createRaisedBevelBorder());
 b3.setBorder(BorderFactory.createRaisedBevelBorder());
 b4.setBorder(BorderFactory.createRaisedBevelBorder());
 b5.setBorder(BorderFactory.createRaisedBevelBorder());
 b6.setBorder(BorderFactory.createRaisedBevelBorder());
 b7.setBorder(BorderFactory.createRaisedBevelBorder());
 b8.setBorder(BorderFactory.createRaisedBevelBorder());
 b9.setBorder(BorderFactory.createRaisedBevelBorder());
 b0.setBorder(BorderFactory.createRaisedBevelBorder());
 bplus.setBorder(BorderFactory.createRaisedBevelBorder());
 bminus.setBorder(BorderFactory.createRaisedBevelBorder());
 bmal.setBorder(BorderFactory.createRaisedBevelBorder());
 bteil.setBorder(BorderFactory.createRaisedBevelBorder());
 bproz.setBorder(BorderFactory.createRaisedBevelBorder());
 breset.setBorder(BorderFactory.createRaisedBevelBorder());
 berg.setBorder(BorderFactory.createRaisedBevelBorder());
 //bkomma.setBorder(BorderFactory.createRaisedBevelBorder());
  JPanel comboPanel 
        = new JPanel();comboPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
 comboPanel.setBackground(new Color(255,255,255,0));
 comboPanel.add(cop1);
 comboPanel.add(cop2);
 tf1 = new JTextArea(2,10);
 tf1.setEditable(false);
 tf1.setBorder(BorderFactory.createRaisedBevelBorder());
  sp = new JScrollPane(tf1);hgp = new HGPanel(0);
 hgp.add(comboPanel,BorderLayout.NORTH);
 hgp.add(new MyJLabel1(" "),BorderLayout.WEST);
 hgp.add(new MyJLabel1(" "),BorderLayout.EAST);
 hgp.add(new midPanel(),BorderLayout.CENTER);
 cp.add(hgp);
  // pack();  setVisible(true);  }//INNER CLASS  //--------------------------------------------------------------------------/////////////// /// WRITER FÜR EINE EXTERNE .TXT- DATEI //////////////////
 //--------------------------------------------------------------------------
  public void 
        InDateiSchreiben(String verzeichnis) {  try {System.out.println("durch");
 BufferedWriter fr = new BufferedWriter(new FileWriter("D:/Gast/Java_becker/Java_Uebungen/Projekt_1/datei1.txt"));
 //Alternativpfad: FileWriter fr = new FileWriter("");
 fr.write(speicher);
 fr.newLine();
 fr.close();
 System.out.println("#");
 } catch (IOException e) {
 System.out.println("Konnte Datei nicht erstellen");
 }
 }
 //--------------------------------------------------------------------------
 //////////////////// CLASS MIDPANEL 3. LAYER ////////////////////
 //--------------------------------------------------------------------------
  class midPanel 
        extends JPanel{  public midPanel(){setLayout(new BorderLayout());
 setBackground(new Color(0,0,0,0));
 setBorder(BorderFactory.createCompoundBorder());
 add(sp,BorderLayout.NORTH);
 add(new GridtastPanel(),BorderLayout.CENTER);
 }
 }//INNER CLASS
  //--------------------------------------------------------------------------/////////////////// CLASS GRIDTASTPANEL IN MIDPANEL 4. LAYER /////////
 //--------------------------------------------------------------------------
  class GridtastPanel 
        extends JPanel implements ActionListener{public GridtastPanel(){
 setLayout(new GridLayout(10,3,10,30));
 setBackground(new Color(0,255,0,0));
 tf1.setFont(new Font("serif",Font.BOLD,30));
 tf1.setText("");
 add(new JLabel(""));
 add(new JLabel(""));
 add(new JLabel(""));
 add(new JLabel(""));
 add(new JLabel(""));
 add(new JLabel(""));
 add(new JLabel(""));
 add(new JLabel(""));
 b1.addActionListener(this);
 b2.addActionListener(this);
 b3.addActionListener(this);
 b4.addActionListener(this);
 b5.addActionListener(this);
 b6.addActionListener(this);
 b7.addActionListener(this);
 b8.addActionListener(this);
 b9.addActionListener(this);
 b0.addActionListener(this);
  add(b1);add(b2);
 add(b3);
 add(b4);
 add(b5);
 add(b6);
 add(b7);
 add(b8);
 add(b9);
 add(b0);
  add(new JLabel(""));add(new JLabel(""));
 add(new JLabel(""));
 add(new JLabel(""));
 add(new JLabel(""));
 add(new JLabel(""));
 add(new JLabel(""));
 add(new JLabel(""));
 add(new JLabel(""));
 berg.addActionListener(this);
 //bkomma.addActionListener(this);
 breset.addActionListener(this);
 bproz.addActionListener(this);
 bplus.addActionListener(this);
 bminus.addActionListener(this);
 bmal.addActionListener(this);
 bteil.addActionListener(this);
 /*ToolTipTexte wurden auskommentiert, weil sie - wahrschenlich
 durch die LayeredPane und die BackgroundColor- Einstellungen
 der folgenden Layer Schatten werfen
 */
 // berg.setToolTipText("Ergebnis ausgeben");
 add(berg);
 add(new JLabel(""));
 add(new JLabel(""));
 // bkomma.setToolTipText("Komma setzen");
 //add(bkomma);
 // breset.setToolTipText("Löschen?");
 add(breset);
 // bproz.setToolTipText("Prozentrechnung");
 add(bproz);
 // bplus.setToolTipText("Addition");
 add(bplus);
 // bminus.setToolTipText("Subtraktion");
 add(bminus);
 // bmal.setToolTipText("Multiplikation");
 add(bmal);
 // bteil.setToolTipText("Division");
 add(bteil);
  add(new JLabel(""));add(new JLabel(""));
 add(new JLabel(""));
 add(new JLabel(""));
 }
 //----------------------------------------------------------------------
 ///////////////// EREIGNISBEHANDLUNG DER BUTTONS /////////////////////
 //----------------------------------------------------------------------
  public void 
        actionPerformed(ActionEvent e) { if(e.getSource()== b1){
 tf1.setText("1");
 Eingabe = Eingabe + tf1.getText();
 tf1.setText(Eingabe);
  }  if(e.getSource()== 
        b2){System.out.println("Button 2");
 tf1.setText("2");
 Eingabe = Eingabe + tf1.getText();
 tf1.setText(Eingabe);
  }  if(e.getSource()== 
        b3){tf1.setText("3");
 Eingabe = Eingabe + tf1.getText();
 tf1.setText(Eingabe);
  }  if(e.getSource()== 
        b4){tf1.setText("4");
 Eingabe = Eingabe + tf1.getText();
 tf1.setText(Eingabe);
  }  if(e.getSource()== 
        b5){tf1.setText("5");
 Eingabe = Eingabe + tf1.getText();
 tf1.setText(Eingabe);
  }  if(e.getSource()== 
        b6){tf1.setText("6");
 Eingabe = Eingabe + tf1.getText();
 tf1.setText(Eingabe);
  }  if(e.getSource()== 
        b7){tf1.setText("7");
 Eingabe = Eingabe + tf1.getText();
 tf1.setText(Eingabe);
  }  if(e.getSource()== 
        b8){tf1.setText("8");
 Eingabe = Eingabe + tf1.getText();
 tf1.setText(Eingabe);
  }  if(e.getSource()== 
        b9){tf1.setText("9");
 Eingabe = Eingabe + tf1.getText();
 tf1.setText(Eingabe);
  }if(e.getSource()== b0){
 tf1.setText("0");
 Eingabe = Eingabe + tf1.getText();
 tf1.setText(Eingabe);
  } //------------------------------------------------------------------
 //////// Kommabehandlung (nicht fertig) //////////////////////////
 //------------------------------------------------------------------
  //if(e.getSource()== 
        bkomma){// tf1.setText("."+"\n");
 // if('0' <= bkomma.charAt(0) && bkomma.charAt(0) <= '9' 
        || bkomma.equals(".")){
 // System.out.println("Komma?");
 // tf1.setText("Zahl eingeben!"+"\n"+"In dieser 
        Version nicht möglich");
 // tf1.setText("\n");
 //}
  if(e.getSource()== 
        breset){System.out.println("Button C");
 tf1.setText("-!! GELÖSCHT !!-"+"\n ");
 erg = 0.0;
 Eingabe = "";
 a = "";
 speicher = speicher + a +"\n";
  }  if(e.getSource()== 
        bproz){a = tf1.getText();
 speicher = speicher + a + "%";
 eingabe = Double.parseDouble(tf1.getText());
 berechneproz(eingabe);
 System.out.println("Button %");
  }  if(e.getSource()== 
        bplus){a = tf1.getText();
 speicher = speicher + a + "+";
 eingabe = Double.parseDouble(tf1.getText());
 berechneplus(eingabe);
 System.out.println(operator);
 System.out.println(erg);
  }  if(e.getSource()== 
        bminus){a = tf1.getText();
 speicher = speicher + a + "-";
 eingabe =Double.parseDouble(tf1.getText());
 berechneminus(eingabe);
 System.out.println(operator);
 System.out.println(erg);
  }  if(e.getSource()== 
        bmal){a = tf1.getText();
 speicher = speicher + a + "x";
 eingabe = Double.parseDouble(tf1.getText());
 berechnemal(eingabe);
 System.out.println(operator);
 System.out.println(erg);
  }  if(e.getSource()== 
        bteil){a = tf1.getText();
 speicher = speicher + a +"/";
 eingabe = Double.parseDouble(tf1.getText());
 berechneteil(eingabe);
 System.out.println(operator);
 System.out.println(erg);
  }  if(e.getSource()== 
        berg){a = tf1.getText();
 speicher = speicher + a +"=";
 eingabe = Double.parseDouble(tf1.getText());
 berechnegleich(eingabe);
 tf1.setText(""+"="+erg+"\n");
 a = tf1.getText();
 speicher = speicher + a + "\n";
 System.out.println(operator);
 System.out.println(erg);
  }  }  }//INNER CLASS  //--------------------------------------------------------------------------///////////// RECHENMETHODEN, DURCH ACTION PERFORMED AUFGERUFEN ///////////
 //--------------------------------------------------------------------------
  public double 
        berechneplus(double wert){System.out.println("berechnung +");
 if(plus == false)
 {
 erg = wert;//Abfrage durch Zähler nach vorhergehender Operation
 plus = true;
 }
 else
 {
 erg = erg + wert;
 }
  System.out.println(erg+" 
        ="+erg+" +"+ wert);tf1.setText("\n");
 Eingabe = " ";
 operator = "+";
 return erg;
 }
  public double 
        berechneminus(double wert){System.out.println("berechnung -");
 if(minus ==false)
 {
 erg = wert;
 minus = true;
 }
 else
 {
 erg = erg - wert;
 }
 System.out.println(erg+" ="+erg+" -"+ wert);
 Eingabe = " ";
 operator = "-";
 return erg;
 }
  public double 
        berechnemal(double wert){System.out.println("berechnung x");
 if(mal == false)
 {
 erg = wert;
 mal = true;
 }
 else
 {
 erg = erg * wert;
 }
 System.out.println(erg+" ="+erg+" *"+ wert);
  Eingabe = " 
        ";operator = "*";
 return erg;
 }
  public double 
        berechneteil(double wert){System.out.println("berechnung /");
 if(teil == false)
 {
 erg = wert;
 teil = true;
 }
 else
 {
 erg = erg / wert;
 }
 System.out.println(erg+" ="+erg+" /"+ wert);
  Eingabe = " 
        ";operator = "/";
 return erg;
 }
  public double 
        berechneproz(double wert){System.out.println("berechnung %");
  System.out.println("proz");erg = wert / 100.0 ;
  System.out.println(erg);  Eingabe = " 
        ";operator = "%";
 return erg;
 }
 public double berechnegleich(double wert){
 System.out.println("berechnunggleich");
 if(operator.equals("+")){
 System.out.println("gleich +");
 erg =erg + wert;
 System.out.println(erg+" ="+erg+" +"+ wert);
 }
 if(operator.equals("-")){
 System.out.println("gleich -");
 if(erg!=0.0)
 erg =erg - wert;
 System.out.println(erg+" ="+erg+" -"+ wert);
 }
 if(operator.equals("*")){
 System.out.println("gleich x");
 erg =erg * wert;
 System.out.println(erg+" ="+erg+" *"+ wert);
 }
 if(operator.equals("/")){
 System.out.println("gleich /");
 erg =erg / wert;
 System.out.println(erg+" ="+erg+" /"+ wert);
 }
 if(operator.equals("%")){
 System.out.println("gleich %");
 erg =erg * eingabe;
 System.out.println(erg+" ="+erg+" *"+ wert);
 }
  minus = false;plus = false;
 mal =false;
 teil = false;
 proz = false;
 return eingabe;
  } //--------------------------------------------------------------------------
 /////////////// CLASS HGPANEL UNTERSTER LAYER ////////////////////////
 //--------------------------------------------------------------------------
 class HGPanel extends JLayeredPane{
 Image image;
 Image[] img =new Image[5];
 int index;
 public HGPanel(int index){
 this.index=index;
  img[0] = Toolkit.getDefaultToolkit().getImage(bildpfad+"metal_calc.jpg");img[1] = Toolkit.getDefaultToolkit().getImage(bildpfad+"gruen.jpg");
 img[2] = Toolkit.getDefaultToolkit().getImage(bildpfad+"rot.jpg");
 img[3] = Toolkit.getDefaultToolkit().getImage(bildpfad+"gelb.jpg");
 img[4] = Toolkit.getDefaultToolkit().getImage(bildpfad+"matrix.jpg");
 MediaTracker mtr = new MediaTracker(this);
 mtr.addImage(img [0],(0));
 mtr.addImage(img [1],(0));
 mtr.addImage(img [2],(0));
 mtr.addImage(img [3],(0));
 mtr.addImage(img [4],(0));
 try{
 mtr.waitForAll();
 }catch(Exception e){}
 setLayout(new BorderLayout());
 }
 public void setImage(int index){
 this.index = index;
 }
 public void paintComponent(Graphics g){
 super.paintComponent(g);
 System.out.println("#"+image+"#");
 System.out.println("#");
 g.drawImage(img[index],0,0,getWidth(),getHeight(),this);
 }
 }//INNER CLASS
 ///////////////////////////////////////////////////////////////////////
 ///////////// FAKE //////////////////////////////////////////////
 ///////////////////////////////////////////////////////////////////////
  class MyJLabel1 
        extends JLabel{public MyJLabel1(String s){
 super(s);
 }
  public void 
        setBounds(int x, int y, int w, int h) {System.out.println("breite "+w);
 super.setBounds(x,y,50,50);
 }
 }//INNER CLASS
 }//class MyJFrame1
 //------------------------------------------------------------------------------
 ///////////////// HIFEFENSTER EXTERNES JFRAME - DURCH COP2 AUFGERUFEN 
        ////////
 //------------------------------------------------------------------------------
 class MyJFrameHilfe 
        extends JFrame { //extends JFrame= erbt von JFrame  Container cp 
        = getContentPane();JTextField tf1;
 JTextArea ta1;
 public MyJFrameHilfe() {
 super("Hilfe");
 setBounds(100,100,300,300);
 tf1 = new JTextField(" Version 1.0 : Luzifer and friends");
 tf1.setEditable(false);
 ta1 = new JTextArea(10,10);
 ta1.setOpaque(false);
 ta1.setBackground(new Color(0,255,0,50));
 ta1.setLineWrap(true);
 ta1.setWrapStyleWord(true);
 ta1.setFont(new Font("Arial",Font.BOLD,16));
 ta1.setText(""+"\n"+" BENUTZERHANDBUCH"+"\n"+""+"\n"+"Das 
        Programm besteht aus einem äußeren Rahmen, der ca. 500 x 800 
        Pixel groß ist."+"\n"+"Das Layout des Rechners 
        lässt sich über eine AuswahlBox, die oben links angebracht ist, 
        im Design ändern."+"\n"+"Daneben ist eine weitere 
        Box angelegt, über deren Auswahlmenü die Hilfe zur Bedienung 
        des Rechners angezeigt wird."+"\n"+"Eine weitere Option 
        dieser Box ist das Ausgeben der Daten in eine externe.txt- Datei zur weiteren 
        Verwendung, die im Programmordner liegt."+"\n"+"Im 
        äußeren Rahmen ist ein innerer Rahmen angelegt,der den eigentlichen 
        Taschenrechner enthält."+"\n"+"In diesem Rahmen 
        ist ganz oben ein Textfeld angesiedelt, in dem die jeweils eingegebenen 
        Zahlen und das Rechenergebnis angezeigt wird."+"\n"+"Im 
        oberen Drittel befindet sich das Interaktionsfeld, bestehend aus dem Zahlenblock(0 
        - 9) und im unteren Drittel dem Operatorenblock (Grundrechenarten, Prozentrechnung 
        sowie Löschfunktion)."+"\n"+""+"\n"+" 
        DIESER RECHNER IST BUGGY!"+"\n"+""+"\n"+"Es 
        können bei dieser Version nur ganze natürliche Zahlen eingegeben 
        und verarbeitet werden!!!"+"\n"+"Die Ausgabe der Ergebnisse 
        wiederum kann negative Zahlen und Nachkommastellen enthalten!"+"\n"+"Sollen 
        mehrere Rechenoperationen nacheinander erfolgen, muß für ein 
        korrektes Ergebnis nach jeder erfolgten Rechenoperation die Ergebnistaste 
        gedrückt werden!"+"\n"+"Beispiel 3 x 3 = 9"+"\n"+"Es 
        dürfen nicht zwei Operatortasten ohne eine zwischenzeitliche Eingabe 
        von Zahlenwerten betätigt werden!"+"\n"+"Daß 
        der Anwender weiß, wie ein Taschenrechner im Grunde anzuwenden ist, 
        setze ich voraus..."+"\n"+" DANKE UND VIEL SPASS!!!");
 ta1.setEditable(false);
  JPanel NorthPanel 
        =new JPanel();NorthPanel.setBackground(Color.gray);
 NorthPanel.setBorder(BorderFactory.createTitledBorder("Version"));
  NorthPanel.add(tf1);  JPanel westPanel= 
        new JPanel();westPanel.setLayout(new GridLayout(1,0));
 westPanel.setBorder(BorderFactory.createEtchedBorder());
 westPanel.setBackground(Color.gray);
 westPanel.add(new JLabel("Hilfe: "));
 JScrollPane sp = new JScrollPane(ta1);
  cp.setLayout(new 
        BorderLayout());cp.add(NorthPanel,BorderLayout.NORTH);
 cp.add(westPanel,BorderLayout.WEST);
 cp.add(sp,BorderLayout.CENTER);
  //pack();  setVisible(true);  }}// class MyJFrameHilfe
 
 |