inhoud voor de actionListener voor mijn klasse kassa

Status
Niet open voor verdere reacties.

romanosan

Gebruiker
Lid geworden
7 okt 2007
Berichten
88
Code:
public class Kassa {

	private double subtotaal;
	private final double PERCENTAGE_BTW = 19.0;

	public void telOp(double bedrag) {
		subtotaal += bedrag;
	}

	public double getSubtotaal() {
		return subtotaal;
	}

	public void reset() {
		subtotaal = 0;
	}

	public double berekenBTW() {
		return subtotaal - berekenSubtotaalExBTW();
	}

	public double berekenSubtotaalExBTW() {
		return subtotaal / (1 + PERCENTAGE_BTW / 100);
	}

}
Code:
//KNOPHANDLERS
  class KnopHandler1 implements ActionListener 
  {
    public void actionPerformed( ActionEvent e ) 
    {
    	String invoer = invoerVak.getText();
    	double invoerBedrag = Double.parseDouble (invoer);
    	
    	//hiermee stop je het bedrag in het kassasysteem.
    	kassa.telOp (invoerBedrag);
    	kassa.berekenBTW();
    	kassa.berekenSubtotaalExBTW();
    	
    	
    	//
           
    }
  }
  
  class KnopHandler2 implements ActionListener 
  {
    public void actionPerformed( ActionEvent e ) 
    {
    	kassa.reset();
           
    }
  }

Hoe moet ik dit aanpakken om het te laten werken?
De bedoeling is dat je in het invoerVak een bedrag invult en dan in de 4 uitvoervakken
de behorende ( vind je in klasse kassa) bedragen komen.
 
Laatst bewerkt door een moderator:
Wat voor knoppen heb je?
Wat moeten de knoppen precies doen?

Staan die knoppen in dezelfde klasse als Kassa? of heb je het grafische in een apart klasse?
 
2 knoppen.

private JButton totaalKnop, resetKnop;

Dit is mijn klasse: Paneel
Code:
//oefening 4.6
import javax.swing.*;

import java.awt.Color;
import java.awt.event.*;  

// Het paneel 
class Paneel extends JPanel {
  private JTextField invoerVak;
  private JTextField subtotaalVak, BTWVak, exBTWVak, totaalVak;
  private JLabel invoerLabel, subtotaalLabel, BTWLabel, exBTWLabel, totaalLabel;
  private JButton totaalKnop, resetKnop;
  private Kassa kassa;
  
 

  public Paneel() 
  {
    setLayout( null ); 
    //maak kassa
    kassa = new Kassa();
    
    
    //maak knop
    totaalKnop = new JButton ("Totaal");
    KnopHandler1 kh1 = new KnopHandler1();
    totaalKnop.addActionListener(kh1);
    
    resetKnop = new JButton ("Reset");
    KnopHandler2 kh2 = new KnopHandler2();
    resetKnop.addActionListener(kh2);
    
    // Maak de tekstvakken
    invoerVak = new JTextField( 10 );
    invoerVak.setHorizontalAlignment( JTextField.RIGHT );
    invoerVak.addActionListener( new KnopHandler1() );
    
    subtotaalVak = new JTextField( 10 );
    subtotaalVak.setHorizontalAlignment( JTextField.RIGHT );
    subtotaalVak.addActionListener( new KnopHandler1() );
    subtotaalVak.setBackground( Color.LIGHT_GRAY );


    BTWVak = new JTextField( 10 );
    BTWVak.setHorizontalAlignment( JTextField.RIGHT );
    BTWVak.addActionListener( new KnopHandler1() );
    BTWVak.setBackground( Color.LIGHT_GRAY );

    
    exBTWVak = new JTextField( 10 );
    exBTWVak.setHorizontalAlignment( JTextField.RIGHT );
    exBTWVak.addActionListener( new KnopHandler1() );
    exBTWVak.setBackground( Color.LIGHT_GRAY );
  
    totaalVak = new JTextField( 10 );
    totaalVak.setHorizontalAlignment( JTextField.RIGHT );
    totaalVak.addActionListener( new KnopHandler1() );
    totaalVak.setBackground( Color.GREEN );
    
    
    
         
    // Maak de labels
    invoerLabel = new JLabel( "voer bedrag in" );
    subtotaalLabel = new JLabel("Subtotaal");
    BTWLabel = new JLabel ("BTW");
    exBTWLabel = new JLabel ("Totaal ex BTW");
    totaalLabel = new JLabel ("Totaal");
    
    
    // Bepaal van alle componenten de plaats en afmeting
    
    invoerVak.setBounds ( 100,50,120,20 );
    subtotaalVak.setBounds ( 100,80,120,20 );
    BTWVak.setBounds ( 100,110,120,20 );
    exBTWVak.setBounds ( 100,140,120,20 );
    totaalVak.setBounds ( 100,170,120,20 );
    
    totaalKnop.setBounds ( 230,50,100,20 );
    resetKnop.setBounds ( 230,80,100,20 );
    
    invoerLabel.setBounds ( 10,50,120,20 );
    subtotaalLabel.setBounds ( 10,80,120,20 );
    BTWLabel.setBounds ( 10,110,120,20 );
    exBTWLabel.setBounds ( 10,140,120,20 );
    totaalLabel.setBounds ( 10,170,120,20 );
    
  

    // Voeg de componenten toe aan het paneel
    add	(invoerVak);
    add	(subtotaalVak);
    add (BTWVak);
    add (exBTWVak);
    add (totaalVak);
    add	(totaalKnop);
    add	(resetKnop);
    add	(invoerLabel);
    add	(subtotaalLabel);
    add	(BTWLabel);
    add (exBTWLabel);
    add	(totaalLabel);
 
  }
  

// -------------------------------------------------------------------------------------

//KNOPHANDLERS

  class KnopHandler1 implements ActionListener 
  {
    public void actionPerformed( ActionEvent e ) 
    {
    	String invoer = invoerVak.getText();
    	double invoerBedrag = Double.parseDouble (invoer);
    	
    	//hiermee stop je het bedrag in het kassasysteem.
    	kassa.telOp (invoerBedrag);
    	kassa.berekenBTW();
    	kassa.berekenSubtotaalExBTW();
    	
    	kassa.totaal = (kassa.getSubtotaal + kassa.berekenBTW);
    	
    	//
           
    }
  }
  
  class KnopHandler2 implements ActionListener 
  {
    public void actionPerformed( ActionEvent e ) 
    {
    	kassa.reset();
           
    }
  }
  
}
 
Laatst bewerkt door een moderator:
Wat ik sowieso zou doen is je actionlisteners niet apart te zetten onderaan de file, maar direct bij de knoppen:

Code:
        totaalKnop = new JButton("Totaal");
        totaalKnop.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(ActionEvent e) {
                Double subtotaal = kassa.getSubtotaal();
                Double btw = kassa.berekenBTW();
                Double exBtw = subtotaal - btw;
                
                subtotaalVak.setText(String.valueOf(subtotaal));
                BTWVak.setText(String.valueOf(btw));
                exBTWVak.setText(String.valueOf(exBtw));
            }
        });
        
        resetKnop = new JButton("Reset");
        resetKnop.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(ActionEvent e) {
                kassa.reset();
            }
        });

De actionlisteners van de textvakken, wat moeten die doen?

Zoals jij het zei .. de actionlisteners voor je klasse "kassa" klopt niet helemaal. Omdat de klasse "kassa" alleen voor het berekenen is. De klasse "Paneel" is voor het afhandelen van het grafische en ook het opvangen van de acties.
 
@ romanosan: Je kan je eigen bericht aanpassen, dus ik heb je eerste 3 berichten maar even samengevoegd.
Daarnaast nog even het verzoek om de
Code:
 en
tags te gebruiken.


@ Killer: Heel erg strikt genomen is het meer OO om de ActionHandlers in een aparte klasse te zetten (niet dat ik dat ooit doe / geleerd heb, maar enfin) ;)
 
Wat ik sowieso zou doen is je actionlisteners niet apart te zetten onderaan de file, maar direct bij de knoppen:

Code:
        totaalKnop = new JButton("Totaal");
        totaalKnop.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(ActionEvent e) {
                Double subtotaal = kassa.getSubtotaal();
                Double btw = kassa.berekenBTW();
                Double exBtw = subtotaal - btw;
                
                subtotaalVak.setText(String.valueOf(subtotaal));
                BTWVak.setText(String.valueOf(btw));
                exBTWVak.setText(String.valueOf(exBtw));
            }
        });
        
        resetKnop = new JButton("Reset");
        resetKnop.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(ActionEvent e) {
                kassa.reset();
            }
        });

De actionlisteners van de textvakken, wat moeten die doen?

Zoals jij het zei .. de actionlisteners voor je klasse "kassa" klopt niet helemaal. Omdat de klasse "kassa" alleen voor het berekenen is. De klasse "Paneel" is voor het afhandelen van het grafische en ook het opvangen van de acties.

In het invoerVak moet een getal ( DOUBLE) ingevuld kunnen worden en dan moet dat bedrag , als je op de knop klikt verschijnet in het vak: subtotaalVak het dat bedrag.
De BTW over dat bedrag verschijnt in BTWvak, In het vak exBTW verschijnt het bedrag - BTW, in totaalVak verschijnt het bedrag+ BTW.

eigenlijk als je op de knop klikt worden alle uitvoervakken ingevuld.
 
Wat is bij jou eigenlijk het verschil tussen "subtotaal" en "totaal" ?

In mijn ogen is Subtotaal exclusief BTW en totaal inclusief BTW.
 
Wat is bij jou eigenlijk het verschil tussen "subtotaal" en "totaal" ?

In mijn ogen is Subtotaal exclusief BTW en totaal inclusief BTW.

subtotaal is gewoon een vakje waar je invoer in wordt geplakt.
Als subtotaal 10 is en je voert in invoerVak weer 10 in dan moet subtotaal het optellen, dus wordt subtotaal 20.

BTWVak en exBTWVak zijn 2 vakken waarin de BTW incl. en exc. over het bedrag in subtotaal wordt getoont.
 
Laatst bewerkt:
Met dat stuk code wat ik je gegeven heb, daar moet je wel op verder kunnen gaan.
Als je vast loopt, zeg het dan.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan