私は3つのクラスを持っています。スタートクラス、kassaクラス、kassapaneelクラスです。 kassapaneelは私のパネルです、私が正しいならグラフィカルな側面です。私のkassaクラスではgetSubtotaalというメソッドがありますが、それは私のkassapaneelに拡張されていますが、それを認識していないようです。 berekenBTWでも同じです。そしてtotaal変数も。メソッドが解決できないか、フィールドではありません
マイkassaクラス:
package Opdrachten;
import javax.swing.*;
public class Kassa extends JPanel{
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);
}
}
マイkassapaneel(パネル):
package Opdrachten;
import java.awt.Color;
import java.awt.event.*;
import javax.swing.*;
public class Kassapaneel extends Kassa {
private JTextField invoerVak;
private JTextField subtotaalVak, BTWVak, exBTWVak, totaalVak;
private JLabel invoerLabel, subtotaalLabel, BTWLabel, exBTWLabel, totaalLabel;
private JButton totaalKnop, resetKnop;
private Kassa kassa;
public Kassapaneel()
{
setLayout(null);
//maak kassa
kassa = new Kassa();
//maak knop
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();
}
});
// 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);
}
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();
}
}
}
解決できない方法はどこですか? – Gendarme
解決できない方法ですか?私は 'kassa.totaal =(kassa.getSubtotaal + kassa.berekenBTW);を見ています。これにより問題が発生します。 'Kasaa'クラスでは、' totaal'という公共変数はありません。 –
さらに、Kassaクラスを拡張していますが、Kassaクラスの属性を定義しています。これは望ましい行動ですか? –