JavaExempelEuroKalkylator
[ Hem ] Allmänt ASP XML SQL ADO HTML CSS VB Java Design Karta
Grunderna Exempel

EuroKalkylator

En EuroKalkylator (suck)

Provkör klassen

    Tema:
  1. Panel
  2. Botton
  3. KlassArv
  4. Konverteringar

EuroCalcApplet.java

Skapa en fil med namnet EuroCalcApplet.java och sätt in följande kod:

import java.awt.*;
import java.applet.*;
import java.awt.event.*;



public class EuroCalcApplet extends Applet
{
    // init måste alltid finnas i en Applet
    public void init()
    {
        // för att få panelen att fylla ut helt sätter 
        // vi in den i mitten i en BorderLayout
        this.setLayout( new BorderLayout( ) );
        this.add( "Center", new EuroCalc( ) );
    }   
}



// en variant på en vanlig Button
class MyButton extends Button
{
    // konstrueraren tar strängen för knappen, men även
    // vem ssom skall meddelas om den blir tryckt på
    public MyButton(String label, ActionListener who)
    {
        // använd förälderns konstruerare för att enklast få 
        // texten på knappen
        super(label);
        
        // eftersom vi hade fått ven som var intresserad av händelserna
        // som parameter kan vi passa på att sätta addActionListener till
        // denna
        this.addActionListener( who );
        
        // lite "lullLull" med färger och text
        this.setBackground(new Color(255,255,192) );
        this.setForeground(new Color(0,0,255));
        this.setFont(new Font("SansSerif", Font.BOLD,16));
    }
    
    // en något modifierad setEnabled som används istället
    // för Button klassens normala
    public void setEnabled(boolean e)
    {
        // se till att ha "normal" setEnabled funktionalitet genom 
        // att använda förälderns motsvarande funktion
        super.setEnabled (e);
        
        // sätt grå färg om knappen är disablead
        if ( e )
            this.setBackground(new Color(255,255,192) );
        else
            this.setBackground(new Color(192,192,192) );
    }
}

class EuroCalc extends Panel implements ActionListener 
{
    // vi använder oss av den modifierade knappen MyButton i 
    // stället för en vanlig Button.
    // vi anger this som andra parameter så att knappen 
    // kan sätta sin addActionListener rätt
    MyButton b0 = new MyButton("0", this);
    MyButton b1 = new MyButton("1",this);
    MyButton b2 = new MyButton("2",this);                          
    MyButton b3 = new MyButton("3",this);
    MyButton b4 = new MyButton("4",this);
    MyButton b5 = new MyButton("5",this);
    MyButton b6 = new MyButton("6",this);
    MyButton b7 = new MyButton("7",this);
    MyButton b8 = new MyButton("8",this);
    MyButton b9 = new MyButton("9",this);
    MyButton bP = new MyButton(".",this);
    MyButton bC = new MyButton("C",this);
    MyButton bFIM = new MyButton("FIM",this);
    MyButton bEUR = new MyButton("EUR",this);
    
    // textfield som skall visa siffrorna
    TextField text = new TextField();
    
    // Hit kommer vi när vi klickat på någon knapp
    public void actionPerformed(ActionEvent e)
    {
        // Vi skapar en Button som vi sätter til 
        // det objekt som vi får med e.getSource()
        // getSource() kommer dock att returnera ett objekt 
        // av typen Object och inte Button
        // därför måste vi säga åt java att objektet skall 
        // betraktas som en Button genom att sätta (Button)
        // i tilldelningen nedan
        Button bb = (Button) e.getSource();
        
        // vi vet nu vilken text det fans på den knapp som blev tryckt
        String texten = bb.getLabel();
        // jo jag vet nog att man skulle kunna använda
        // String texten = e.getActionCommand()
        // men jag ville så gärna visa casting
        
        // har EUR knappen blivit tryckt
        if ( texten == "EUR" )
        {
            // Skapa  en Double med hjälp av den text som 
            // finns i TextFielden
            Double d = new Double(text.getText());
            
            // låt Double klassen ge oss en double som vi 
            // dividerar med 5.94573 för att få EUR värdet
            // eftersom setText vill ha en String och inte en double 
            // som parameter "tvingar" vi resultatet till enn String
            // genom att sätta "" + före
            text.setText( "" + d.doubleValue() / 5.94573 );
        }
        else if ( texten == "FIM" )
        {
            // som EUR fast tvärsemot
            Double d = new Double(text.getText());
            text.setText( "" + d.doubleValue() * 5.94573 );
        }
        else if (texten == "C" )
        {
            // C knappen skall helt enkelt tömma texten
            text.setText("");   
            // se till att "punktknappen" fungerar
            bP.setEnabled(true);
        }
        else
        {
            // tag den text som fanns på knappen och sätt in den 
            // efter den text som redan fanns i TextFielden
            text.setText(text.getText() + texten );
            
            // om vi tryckte på "punktknappen" så ser vi till att vi 
            // inte kan slå flera punkter genom att "disabla" denna knapp
            if ( texten == ".")
            {
                bP.setEnabled(false);
            }
        }
    }
    
    // konstrueraren
    public EuroCalc()
    {
        // panelen bygger på en BorderLayout
        BorderLayout border = new BorderLayout( );
        
        // med en GridLayout med 5 rader och 3 kolumner i sig
        GridLayout grid = new GridLayout( 5, 3 );
        
        // sätter lite gap mellan knapparna
        grid.setHgap(4);
        grid.setVgap(6);
        
        // och under texten
        border.setVgap(4);
        
        // se till att panelen har BorderLayout
        this.setLayout( border );
        
        // sätt in TextFielden längst upp
        this.add("North", text );
        
        // skapa en Panel som har vår GridLayout
        Panel panel = new Panel( grid );
        
        // lägg dit alla knappar - observera ordningsföljden
        // de läggs dit med
        panel.add(b7);
        panel.add(b8);
        panel.add(b9);
        panel.add(b4);
        panel.add(b5);
        panel.add(b6);
        panel.add(b1);
        panel.add(b2);
        panel.add(b3);
        panel.add(b0);
        panel.add(bP);
        // måste få en tom cell i griden - sätt dit en tom Label
        panel.add(new Label());
        panel.add(bEUR);
        panel.add(bFIM);
        panel.add(bC);
        
        // sätt sedan in den "griddade" panelen i mitten av 
        // vår BorderLayout
        this.add("Center", panel);
        
        // lite färgefixande
        text.setForeground(new Color(0,0,255));
        text.setBackground(new Color(255,255,77));

    }
}

  FärgblandareEditor
Exempel
Färgblandare
EuroKalkylator
Editor
Animerade bilder ...
Scribble i VB
Scribble i Java ...


Top
< Färgblandare Editor>
© Anders Enges, Vörå 2002  | 09.04.01 20:55 Visa asp koden