probleem password java

Status
Niet open voor verdere reacties.

italianmof

Nieuwe gebruiker
Lid geworden
6 jan 2011
Berichten
4
hey, ik zou graag hebben dat als ik op de buttonkelner druk, dat er daarna een venster password verschijnt zodat ik na het ingeven ervan verder kan met mijn kassabewerkingen. en aan dat paswoord zijn er nog enkele problemen waarvan ik niet goed snap hoe ik verder moet doen.

de code voor password komt van:

http://download.oracle.com/javase/tutorial/uiswing/components/passwordfield.html

en van http://download.oracle.com/javase/t...dDemoProject/src/components/PasswordDemo.java

hier alvast mijn code:

Code:
import java.util.ArrayList;
import java.awt.*;
import java.awt.event.*;
import java.awt.Color;
import javax.swing.*;
import javax.swing.border.*;
//import javax.swing.UIManager;
import java.text.NumberFormat;
import java.lang.Character;
import java.lang.Number;
import java.lang.NumberFormatException;

import javax.swing.JOptionPane;
import javax.swing.JDialog;
import javax.swing.JButton;
import javax.swing.JRadioButton;
import javax.swing.ButtonGroup;
import javax.swing.JLabel;
import javax.swing.ImageIcon;
import javax.swing.BoxLayout;
import javax.swing.Box;
import javax.swing.BorderFactory;
import javax.swing.border.Border;
import javax.swing.JTabbedPane;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.beans.*; 

import java.util.Arrays;


/**
 * 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 boolean showStockButton;
    
    private JPanel buttonPanel1;
    private JPanel buttonPanel2;
    private JPanel buttonPanel3;
    private JPanel buttonPanel4;
    private JPanel buttonPanel5;
    private Container contentPane;
    protected JTextField textField;
    private JPanel popup;
    
    private static String OK = "ok";
    private static String HELP = "help";

    private JFrame controllingFrame; //needed for dialogs
    private JPasswordField passwordField;
    private String cmd;
 


    /**
     * Constructor for objects of class KassaGUI
     */
     public KassaGUI()
    {
        newKassa = new Kassa(300);
        bedrag = 0;
        showStockButton = false;
       passwordField = new JPasswordField(10);
       passwordField.setActionCommand(OK);
       passwordField.addActionListener(this);
        makeFrame();
        

    }

    /**
     * Maak Swing-frame
     */
    private void makeFrame()
    {
        JFrame.setDefaultLookAndFeelDecorated(true);
        frame = new JFrame("KassaSysteem");
        makeMenuBar(frame);
       

        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. ");
                    }
                    else {
                        tafel.toonBestelling();
                    }
                }
            });
        buttonPanel4.add(bestel);

        JButton afrekenen = new JButton("Afrekenen");
        afrekenen.setOpaque(true);
        afrekenen.setBackground(Color.orange);

        afrekenen.addActionListener(new ActionListener(){
                public void actionPerformed(ActionEvent e) {
                    if(tafel==null){
                        System.out.println("Geen tafel geselecteerd.");
                    }
                    else{
                        if(bedrag >= tafel.prijsBestelling()) {
                            newKassa.inhoud(tafel.prijsBestelling());
                            tafel.afrekenen(bedrag);
                        }

                        else {
                            System.out.println("Geen geld of te weinig geld ingegeven.");
                        }
                    }
                }
            });
        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) {
                    try {
                        stock();
                    }
                    catch(Exception exc) {
                        System.out.println(exc);
                        System.out.println("U moet eerst een bestelling maken voor de stock werkt.");
                    }
                        
                }
            });
        buttonPanel4.add(Stock);
        
        JButton clear = new JButton("Wis scherm");
        clear.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    System.out.print('\u000C');
                }
            });
        buttonPanel4.add(clear);

        contentPane.add(buttonPanel4, BorderLayout.SOUTH);

        //frame.setPreferredSize(new Dimension(700, 300));
        frame.pack();
        frame.setSize(1000,600);
        frame.setVisible(true);
    }

    /**
     * selecteer de gewenste kelner
     */
    private static boolean isPasswordCorrect(char[] input) {

    boolean isCorrect = true;

    char[] correctPassword = { 'b', 'u', 'g', 'a', 'b', 'o', 'o' };

 

    if (input.length != correctPassword.length) {

        isCorrect = false;

    } else {

        isCorrect = Arrays.equals (input, correctPassword);

    }

 

    //Zero out the password.

    Arrays.fill(correctPassword,'0');

 

    return isCorrect;

}

 

public void actionPerformed(ActionEvent e, int i)
    {
  
    if(tafel == null)
        {   System.out.println("Selecteer eerst een tafel aub.");
            JOptionPane.showMessageDialog(frame,
    "Selecteer eerst een tafel aub",
    "Inane warning",
    JOptionPane.WARNING_MESSAGE);
         }
        
    else
        { String cmd = e.getActionCommand();

    if (OK.equals(cmd)) { //Process the password.
        char[] input = passwordField.getPassword();
        if (isPasswordCorrect(input)) {
             kelner = newKassa.getKelner(i-1);
            kelner.printDetails();
            tafel.kelner(kelner);
        }
        else {
            JOptionPane.showMessageDialog(controllingFrame,
                "Invalid password. Try again.",
                "Error Message",
                JOptionPane.ERROR_MESSAGE);
        }}

        //Zero out the possible password, for security.
        Arrays.fill(input, '0');

        passwordField.selectAll();
        resetFocus();
    }}
   
    /**
     * selecteer de tafel
     */
    private void selectTafel(int i)
    {
        tafel = newKassa.getTafel(i-1);
        System.out.println("Nummer tafel: " + tafel.returnNummer());
        JOptionPane.showMessageDialog(frame,
                        "Nummer tafel:"+ tafel.returnNummer(),
                        "Warning",
                        JOptionPane.WARNING_MESSAGE);
    }

    /**
     * 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();
        frame.setSize(1000,600);
    }

    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();
        frame.setSize(1000,600);

    }

    private void stock() throws Exception
    {
        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) {
            
        }

        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();
        frame.setSize(1000,600);
    }

    /**
     * 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 {
            textField.setText("Geen geldige invoer");
        }
        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("Nieuwe bestelling aangemaakt! Maak uw bestelling");
            JOptionPane.showMessageDialog(frame,
                        "Nieuwe bestelling aangemaakt! Maak uw bestelling",
                        "Warning",
                        JOptionPane.WARNING_MESSAGE);

        }
        else {
            System.out.println("Selecteer een kelner en een tafel.");
            JOptionPane.showMessageDialog(frame,
                        "Selecteer een kelner en een tafel.",
                        "Warning",
                        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.");
                }
            });
        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.");
        JOptionPane.showMessageDialog(frame,
                        "De inhoud van de kassa bedraagd: "+ geld + " euro.",
                        "Warning",
                        JOptionPane.WARNING_MESSAGE);
        
    }

    /*
     * 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.setOpaque(true);
            kelner.setForeground(Color.red);
            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.setOpaque(true);
            tafel.setForeground(Color.blue);
            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.setOpaque(true);
            product.setForeground(Color.green.darker().darker());
            product.addActionListener(new ActionListener() {      
                    public void actionPerformed(ActionEvent e) { 
                        if(tafel==null)
                        {
                            System.out.println("Er is geen tafel geselecteerd.");
                        }
                        else if(tafel.kelner()==null)
                        {
                            System.out.println("Selecteer eerst een kelner voor deze tafel aub");
                        }
                        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;
    }
}


de code waar mijn paswoord in moet komen of poging tot:

Code:
 /**
     * selecteer de gewenste kelner
     */
    private static boolean isPasswordCorrect(char[] input) {

    boolean isCorrect = true;

    char[] correctPassword = { 'b', 'u', 'g', 'a', 'b', 'o', 'o' };

 

    if (input.length != correctPassword.length) {

        isCorrect = false;

    } else {

        isCorrect = Arrays.equals (input, correctPassword);

    }

 

    //Zero out the password.

    Arrays.fill(correctPassword,'0');

 

    return isCorrect;

}

 

public void actionPerformed(ActionEvent e, int i)
    {
  
    if(tafel == null)
        {   System.out.println("Selecteer eerst een tafel aub.");
            JOptionPane.showMessageDialog(frame,
    "Selecteer eerst een tafel aub",
    "Inane warning",
    JOptionPane.WARNING_MESSAGE);
         }
        
    else
        { String cmd = e.getActionCommand();

    if (OK.equals(cmd)) { //Process the password.
        char[] input = passwordField.getPassword();
        if (isPasswordCorrect(input)) {
             kelner = newKassa.getKelner(i-1);
            kelner.printDetails();
            tafel.kelner(kelner);
        }
        else {
            JOptionPane.showMessageDialog(controllingFrame,
                "Invalid password. Try again.",
                "Error Message",
                JOptionPane.ERROR_MESSAGE);
        }}

        //Zero out the possible password, for security.
        Arrays.fill(input, '0');

        passwordField.selectAll();
        resetFocus();
    }}

dank u voor de moeite alvast!!
 
Je moet problemen afsplitsen in deelproblemen waardoor je sneller weet welk deel wat doet.
ik geef je een idee van kelner
indien er al een uml gemaakt is moet je die eens opsturen.

Maak een object tafel met eigenschappen
maak een Kassa (die is er all) maar ik dacht de functionaliteiten waar je nadien een decorator op maakt. maakt het je simpeler. Maak desnoods ook supervisor aan.
en een Bestelling zou ook een object moeten zijn waardoor je een get kan aanroepen die je dan een jpanel geeft van een bestelling. Wat op zich dan mogelijk maakt verschillende Bestellingen actueel te hebben wat je mogelijks wel wil om dan op een collectie een totaal te kunnen maken van de dag/kelner dag/zaak

Code:
package be.djdb.utils;

import java.awt.List;
import java.util.Collection;
import java.util.Map;
import java.util.Set;

public class Kelner {
		private String password = "mijnwachtwoord";
		private Map <Integer,Rekening> rekeningen;
		private int portefuile;
		private String naam;
		private List actualtafels;
		
		
		private boolean isloging (String wachtwoord){
			return password.equals(wachtwoord);
		}
		class Rekening{
			//testclass
		}
}

Soms kan het handiger zijn om veel gebruikte functies in een apparte lib te stoppen hierdoor kan je je code eenvoudiger bekijken omdat je oude werkende functies in je parent zitten.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan