Universität Paderborn - Home Universität Paderborn
Die Universität der Informationsgesellschaft

Grundlagen der Programmierung 2 SS 2005 - Datei BinaryConverter.java

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.awt.Container;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

class BinaryConverter extends JFrame
{
   private JButton b7, b6, b5, b4, b3, b2, b1, b0;
   private JLabel l7, l6, l5, l4, l3, l2, l1,l0;
   private JPanel p7, p6, p5, p4, p3, p2, p1, p0;

   private JLabel lErgebnis;

   private boolean vSet7, vSet6, vSet5, vSet4, vSet3, vSet2, vSet1, vSet0;

   BinaryConverter(String s)
   {
      super(s);

      Container content = getContentPane();
      content.setLayout(new GridLayout(9, 1));

      b7 = new JButton("Toggle");
      b6 = new JButton("Toggle");
      b5 = new JButton("Toggle");
      b4 = new JButton("Toggle");
      b3 = new JButton("Toggle");
      b2 = new JButton("Toggle");
      b1 = new JButton("Toggle");
      b0 = new JButton("Toggle");

      l7 = new JLabel("");
      l6 = new JLabel("");
      l5 = new JLabel("");
      l4 = new JLabel("");
      l3 = new JLabel("");
      l2 = new JLabel("");
      l1 = new JLabel("");
      l0 = new JLabel("");

      p7 = new JPanel(new FlowLayout(FlowLayout.CENTER));
      p6 = new JPanel(new FlowLayout(FlowLayout.CENTER));
      p5 = new JPanel(new FlowLayout(FlowLayout.CENTER));
      p4 = new JPanel(new FlowLayout(FlowLayout.CENTER));
      p3 = new JPanel(new FlowLayout(FlowLayout.CENTER));
      p2 = new JPanel(new FlowLayout(FlowLayout.CENTER));
      p1 = new JPanel(new FlowLayout(FlowLayout.CENTER));
      p0 = new JPanel(new FlowLayout(FlowLayout.CENTER));

      p7.add(l7); p7.add(b7);
      p6.add(l6); p6.add(b6);
      p5.add(l5); p5.add(b5);
      p4.add(l4); p4.add(b4);
      p3.add(l3); p3.add(b3);
      p2.add(l2); p2.add(b2);
      p1.add(l1); p1.add(b1);
      p0.add(l0); p0.add(b0);

      content.add(p7);
      content.add(p6);
      content.add(p5);
      content.add(p4);
      content.add(p3);
      content.add(p2);
      content.add(p1);
      content.add(p0);

      lErgebnis = new JLabel("");
      lErgebnis.setFont(new Font("SansSerif", Font.BOLD, 20));
      content.add(lErgebnis);


      BinaryListener binListener = new BinaryListener();

      b7.addActionListener(binListener);
      b6.addActionListener(binListener);
      b5.addActionListener(binListener);
      b4.addActionListener(binListener);
      b3.addActionListener(binListener);
      b2.addActionListener(binListener);
      b1.addActionListener(binListener);
      b0.addActionListener(binListener);

      setSize(200, 300);
      setLocation(10, 10);

      setDefaultCloseOperation(EXIT_ON_CLOSE);
      setzeLabel();

      this.setVisible(true);
   }

   void setzeLabel()
   {
      l7.setText("2^7: " + btoc(vSet7));
      l6.setText("2^6: " + btoc(vSet6));
      l5.setText("2^5: " + btoc(vSet5));
      l4.setText("2^4: " + btoc(vSet4));
      l3.setText("2^3: " + btoc(vSet3));
      l2.setText("2^2: " + btoc(vSet2));
      l1.setText("2^1: " + btoc(vSet1));
      l0.setText("2^0: " + btoc(vSet0));

      int dezimal = btoi(vSet7) * 128 + btoi(vSet6) * 64 + btoi(vSet5) * 32 + btoi(vSet4) * 16
            + btoi(vSet3) * 8 + btoi(vSet2) * 4 + btoi(vSet1) * 2 + btoi(vSet0);
      lErgebnis.setText("Decimal: " + dezimal);
   }

   static char btoc(boolean b)
   { // boolean to char
      if (b) return '1';
      else return '0';
   }

   static char btoi(boolean b)
   { // boolean to int
      if (b) return 1;
      else return 0;
   }

   // Innere Klasse fuer den eingebetteten Listener:
   class BinaryListener implements ActionListener
   {
      public void actionPerformed(ActionEvent e)
      {
         // Das gerade gewaehlte Feld:
         if (e.getSource() == b7) vSet7 = !vSet7;
         else if (e.getSource() == b6) vSet6 = !vSet6;
         else if (e.getSource() == b5) vSet5 = !vSet5;
         else if (e.getSource() == b4) vSet4 = !vSet4;
         else if (e.getSource() == b3) vSet3 = !vSet3;
         else if (e.getSource() == b2) vSet2 = !vSet2;
         else if (e.getSource() == b1) vSet1 = !vSet1;
         else if (e.getSource() == b0) vSet0 = !vSet0;

         setzeLabel();
      }
   }

   public static void main(String[] args)
   {
      BinaryConverter d = new BinaryConverter("Byte -> Decimal");
   }

}

Generiert mit Camelot | Probleme mit Camelot? | Geändert am: 13.05.2005