italianmof
Nieuwe gebruiker
- Lid geworden
- 6 jan 2011
- Berichten
- 4
Ik krijg deze foutmelding als ik myn gui laat afspele:
Myn klasse GUI:
Weet er iemand een oplossing???
Code:
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at KassaGUI.keuze(KassaGUI.java:220)
at KassaGUI$14.actionPerformed(KassaGUI.java:545)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6041)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
at java.awt.Component.processEvent(Component.java:5806)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4413)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4243)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
Myn klasse GUI:
Code:
import java.util.ArrayList;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
import java.text.NumberFormat;
import java.lang.Character;
import java.lang.Number;
import java.lang.NumberFormatException;
import java.awt.BorderLayout;
import java.awt.Color;
import javax.swing.JColorChooser;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.UIManager;
/**
* Kassa GUI
*
* @author (your name)
* @version (a version number or a date)
*/
public class KassaGUI implements ActionListener
{
private Kassa newKassa;
private Kelner kelner;
private Tafel tafel;
private Producten huidigProduct;
private double bedrag;
private JFrame frame;
private int huidigAantal;
private JPanel buttonPanel1;
private JPanel buttonPanel2;
private JPanel buttonPanel3;
private JPanel buttonPanel4;
private JPanel buttonPanel5;
private Container contentPane;
protected JTextField textField;
private JPanel popup;
/**
* Constructor for objects of class KassaGUI
*/
public KassaGUI()
{
newKassa = new Kassa(300);
bedrag = 0;
makeFrame();
}
/**
* Maak Swing-frame
*/
private void makeFrame()
{
JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new JFrame("Kassasysteem");
makeMenuBar(frame);
UIManager.put("Button.background", Color.black);
UIManager.put("Button.foreground", Color.white);
contentPane = frame.getContentPane();
contentPane.setLayout(new BorderLayout());
/*
* Methode die de kelners toevoegd aan het panel.
*/
Kelners();
textField = new JTextField(20);
textField.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
readInput();
}
});
buttonPanel1.add(textField);
contentPane.add(buttonPanel1, BorderLayout.NORTH);
tafels();
contentPane.add(buttonPanel2, BorderLayout.WEST);
producten();
contentPane.add(buttonPanel3, BorderLayout.CENTER);
buttonPanel4 = new JPanel();
buttonPanel4.setLayout(new FlowLayout());
JButton bestel = new JButton("Toon Bestelling");
bestel.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
if(tafel == null) {
System.out.println("Selecteer eerst een tafel, daarna een kelner");
//JOptionPane.showMessageDialog(frame,
// "Selecteer eerst een tafel, daarna een kelner.",
// "Foutmelding",
// JOptionPane.WARNING_MESSAGE);
}
else {
tafel.toonBestelling();
}
}
});
buttonPanel4.add(bestel);
JButton afrekenen = new JButton("Afrekenen");
afrekenen.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
if(tafel==null){
System.out.println("Geen tafel geselecteerd.");
//JOptionPane.showMessageDialog(frame,
// "Geen tafel geselecteerd.",
// "Foutmelding",
// JOptionPane.WARNING_MESSAGE);
}
else{
if(bedrag >= tafel.prijsBestelling()) {
newKassa.inhoud(tafel.prijsBestelling());
tafel.afrekenen(bedrag);
}
else {
System.out.println("Geen geld of te weinig geld ingegeven.");
// JOptionPane.showMessageDialog(frame,
// "Te weinig geld ingegeven",
// "Foutmelding",
// JOptionPane.WARNING_MESSAGE);
}
}
}
});
buttonPanel4.add(afrekenen);
JButton undo = new JButton("Undo");
undo.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
}
});
buttonPanel4.add(undo);
contentPane.add(buttonPanel4, BorderLayout.SOUTH);
JButton Stock = new JButton("Stock");
Stock.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
stock();
}
});
buttonPanel4.add(Stock);
contentPane.add(buttonPanel4, BorderLayout.SOUTH);
frame.pack();
frame.setSize(1100,700);
frame.setVisible(true);
}
/**
* selecteer de gewenste kelner
*/
private void selectKelner(int i)
{
if(tafel == null)
{
System.out.println("Selecteer eerst een tafel, daarna een kelner");
// JOptionPane.showMessageDialog(frame,
// "Selecteer eerst een tafel, daarna een kelner",
// "Foutmelding",
// JOptionPane.WARNING_MESSAGE);
}
else
{
kelner = newKassa.getKelner(i-1);
kelner.printDetails();
tafel.kelner(kelner);
}
}
/**
* selecteer de tafel
*/
private void selectTafel(int i)
{
tafel = newKassa.getTafel(i-1);
System.out.println("Nummer tafel: " + tafel.returnNummer());
}
/**
* selecteer het aantal dranken dat je wil bestellen via soort pop-up
*/
public void keuze()
{
contentPane.remove(buttonPanel3);
popup = new JPanel(new GridLayout(4, 3));
int i = 0;
while(i<=9)
{
addButton(popup, ""+i);
i++;
}
contentPane.add(popup, BorderLayout.CENTER);
frame.pack();
}
private void addButton(Container panel, String buttonText)
{
JButton button = new JButton(buttonText);
button.addActionListener(this);
panel.add(button);
}
public void actionPerformed(ActionEvent event)
{
String command = event.getActionCommand();
int i = 0;
while(i<9){
if(command.equals("" + i)){
huidigAantal = i;
newKassa.stock(i,huidigProduct);
tafel.voegToeAanBestelling(huidigProduct, i);
}
i++;
}
contentPane.remove(popup);
contentPane.add(buttonPanel3, BorderLayout.CENTER);
frame.pack();
}
private void stock()
{
contentPane.remove(buttonPanel3);
buttonPanel5 = new JPanel();
buttonPanel5.setLayout(new BorderLayout());
JLabel status = new JLabel();
int i = 0;
try{
while(i<newKassa.productenSize())
{
System.out.println(newKassa.getProduct(i).returnNaam() + ": " + newKassa.stock(newKassa.getProduct(i)));
i++;
}
}
catch (Exception e) {
System.out.println(e);
}
buttonPanel5.add(status, BorderLayout.NORTH);
huidigProduct.addStock(bedrag);
bedrag = 0;
JButton terug = new JButton("Gereed");
JPanel flow = new JPanel();
flow.add(terug);
terug.addActionListener(new ActionListener() {
public void actionPerformed (ActionEvent e) {
contentPane.remove(buttonPanel5);
contentPane.add(buttonPanel3, BorderLayout.CENTER);
frame.pack();
}
});
buttonPanel5.add(flow);
contentPane.add(buttonPanel5, BorderLayout.CENTER);
frame.pack();
}
/**
* leest de invoer van het textveld en verandert de string in een double.
*/
private void readInput() //controleer of de invoer geldig is!
{
String bedragText = textField.getText();
if(isDouble(bedragText)) {
bedrag = Double.parseDouble(bedragText);
System.out.println("Ingegeven bedrag: " + bedrag);
}
else {
System.out.println("Geen geldige invoer");
// JOptionPane.showMessageDialog(frame,
// "Geen geldige invoer.",
// "Foutmelding",
// JOptionPane.WARNING_MESSAGE);
}
textField.setText("");
}
private boolean isDouble(String text)
{
try{
Double.parseDouble(text);
} catch(NumberFormatException nfe) {
return false;
}
return true;
}
/**
* Maak een nieuwe bestelling, check eerst of er een kelner en tafel geselecteerd zijn,
* doe anders niets en waarschuw de gebruiker
*/
private void newBestelling()
{
if(kelner != null && tafel !=null) {
System.out.println("Maak u bestelling.");
// JOptionPane.showMessageDialog(frame,
// "Maak u bestelling",
// "Melding",
// JOptionPane.WARNING_MESSAGE);
}
else {
System.out.println("Selecteer een kelner en een tafel");
// JOptionPane.showMessageDialog(frame,
// "Selecteer eerst een tafel, daarna een kelner",
// "Foutmelding",
// JOptionPane.WARNING_MESSAGE);
}
}
/**
* maak menu balk
*/
private void makeMenuBar( JFrame frame)
{
//menubar
JMenuBar menubar = new JMenuBar();
frame.setJMenuBar(menubar);
//menu items.
JMenu fileMenu = new JMenu("Item");
menubar.add(fileMenu);
JMenu helpMenu = new JMenu("Help");
menubar.add(helpMenu);
//drop-downs
JMenuItem newItem = new JMenuItem("Nieuwe bestelling");
newItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
newBestelling();
}
});
fileMenu.add(newItem);
JMenuItem kassaItem = new JMenuItem("Inhoud Kassa");
kassaItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
geld();
}
});
fileMenu.add(kassaItem);
JMenuItem nebItem = new JMenuItem("Andere tafel bedienen");
nebItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Selecteer de bediende tafel, daarna de kelner.");
// JOptionPane.showMessageDialog(frame,
// "Selecteer de bediende tafel, daarna de kelner.",
// "Melding",
// JOptionPane.WARNING_MESSAGE);
}
});
fileMenu.add(nebItem);
JMenuItem quitItem = new JMenuItem("Stoppen");
quitItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
quitKassa();
}
});
fileMenu.add(quitItem);
JMenuItem helpItem = new JMenuItem("Informatie");
helpItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
printHelp();
}
});
helpMenu.add(helpItem);
}
private void quitKassa()
{
System.exit(0);
}
private void printHelp()
{
System.out.println("Help");
}
private void geld()
{
double geld = newKassa.getGeld();
System.out.println("De inhoud van de kassa bedraagd: " + geld + " euro.");
}
/*
* Methode die de kelners aan het panel toevoegd.
*/
private void Kelners()
{
buttonPanel1 = new JPanel();
buttonPanel1.setLayout(new FlowLayout());
int i = 0;
while(i<newKassa.kelnersSize())
{
String naam = newKassa.getKelner(i).returnNaam();
JButton kelner = new JButton(naam);
kelner.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
int p = welkeKelner(e.getActionCommand());
selectKelner(p+1);
}
});
buttonPanel1.add(kelner);
i++;
}
}
/*
* Testen welke kelner aangeduid is.
* @param kelner : de ingegeven kelner bij het induwen van de knop.
*/
private int welkeKelner(String kelner)
{
int i = 0;
while (i<newKassa.kelnersSize())
{
if(kelner.equals(newKassa.getKelner(i).returnNaam()))
{
return i;
}
i++;
}
return i;
}
/*
* Methode die de tafels aan het panel toevoegd.
*/
private void tafels()
{
buttonPanel2 = new JPanel();
buttonPanel2.setLayout(new BoxLayout(buttonPanel2, BoxLayout.Y_AXIS));
int i = 0;
while(i<newKassa.tafelsSize())
{
JButton tafel = new JButton("Tafel " + newKassa.getTafel(i).returnNummer());
tafel.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
int p = welkeTafel(e.getActionCommand());
selectTafel(p+1);
}
});
i++;
buttonPanel2.add(tafel);
}
}
/*
* Methode om te zien welke tafel geselecteerd werd.
*/
private int welkeTafel(String tafel)
{
int i = 0;
while(i<newKassa.tafelsSize())
{
if(("Tafel " + newKassa.getTafel(i).returnNummer()).equals(tafel))
{
return i;
}
i++;
}
return i;
}
/*
* Methode om producten toe te voegen aan het panel.
*/
private void producten()
{
int i = 0;
buttonPanel3 = new JPanel();
buttonPanel3.setLayout(new GridLayout(3, 3));
while(i<newKassa.productenSize()){
JButton product = new JButton(newKassa.getProduct(i).returnNaam());
product.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(tafel==null)
{
System.out.println( "Er is geen tafel geselecteerd");
//JOptionPane.showMessageDialog(frame,
// "Er is geen tafel geselecteerd",
// "Foutmelding",
// JOptionPane.WARNING_MESSAGE);
}
else if(tafel.kelner()==null)
{
System.out.println( "Selecteer eerst een kelner voor deze tafel");
// JOptionPane.showMessageDialog(frame,
// "Selecteer eerst een kelner voor deze tafel",
// "Foutmelding",
// JOptionPane.WARNING_MESSAGE);
}
else
{
int p = welkProduct(e.getActionCommand());
huidigProduct = newKassa.getProduct(p);
keuze();
}
}
});
i++;
buttonPanel3.add(product);
}
}
/**
* Zien welk product geselecteerd is.
*/
private int welkProduct(String product)
{
int i = 0;
while(i<newKassa.productenSize())
{
if(newKassa.getProduct(i).returnNaam().equals(product))
{
return i;
}
i++;
}
return i;
}
}
Weet er iemand een oplossing???