Risolto come si aggiorna un valore in vettore monodimensionale in java

grisu92

Utente Bronze
18 Aprile 2020
31
6
3
27
ho programma di esercizio di simulazione di un parchimetro.

quesiti del test:

1) devo far uscire un ticket con targa auto e orario di entrata
2) detterminare quanti posti sono liberi e quanti sono occupati
3) devo far uscire uno scontrino ogni qualvolta una auto esce con prezzo, importo pagato ed evventuale resto con orario di uscita e targa associata.

ho tali quesiti:

1) vorrei che ogni volta clicco sul bottone esceAuto il numero di posti liberi si aggiornasse perchè se ci sn tipo 10 auto parcheggiate su un massimo di 12 e una esce deve uscire come risultato postiliberi: 3 non 1 o 2.
2) perchè alla prima auto che aggiungo fa ticket n°1 poi ne aggiungo altre 2 esempio mi escono 3 volte ticket n°3
3) quello che succede con il quesito 2 mi succede anche con gli scontrini.


vorrei dei consigli seri o magari delle correzioni al codice perchè sono incartato.

codice classe auto, calcoli e parcheggio(è un jframe) :

Java:
package parcheggio;

public class auto {

    String targa;
    int oraentrata, minutientrata;

    public auto(String targa, int oraentrata, int minutientrata) {
        this.targa = targa;
        this.oraentrata = oraentrata;
        this.minutientrata = minutientrata;
    }
  

    public String stampaorarioEntrata() {
        return  "è entrata alle:" + "\t" + oraentrata + ":" + minutientrata;
    }
    
 
    public String stampaTarga() {
        return  targa;
    }

    public String ingressoAuto() {
        return "l'auto:"+"\t"+stampaTarga() + "\t" + stampaorarioEntrata() + "\n";
    }

}

package parcheggio;

import java.text.DecimalFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.JComboBox;
import javax.swing.JTextArea;

public class calcoli implements Runnable {

    int nauto;
    static final int MAXAUTO = 200;
    auto[] auto;
    double credito;
    GregorianCalendar gc;
    JTextArea display;
    DecimalFormat df = new DecimalFormat("#,##0.00");
    int postiliberi, postioccupati;
    JComboBox selezionaAuto;

    public calcoli() {
        this.auto = new auto[MAXAUTO];
        this.nauto = 0;
        this.selezionaAuto = new JComboBox();
        
    }
 
    public calcoli(JTextArea display) {
        this.display = display;
    }

    public int getAuto() {
        return nauto;
    }

    public auto getAuto(int i) {
        return auto[i];
    }

    public String getAperto() {
        while (true) {
            gc = new GregorianCalendar();
            int ore = gc.get(Calendar.HOUR_OF_DAY);
            int oraapertura = 8;
            int orachiusura = 24;
            if (ore >= oraapertura && ore <= orachiusura) {
                return "siamo aperti";
            } else {
                return "siamo chiusi" + "\n" + "l'orario apertura è  dalle:" + "\t" + oraapertura + "alle:" + "\t" + orachiusura;
            }
        }
    }

    public String acetta10cent(String par) {
        if (par.equalsIgnoreCase("0.1")) {
            credito += 0.1;
        }
        return df.format(credito) + "\t" + "€";

    }

    public String acetta20cent(String par) {
        if (par.equalsIgnoreCase("0.2")) {
            credito += 0.2;
        }
        return df.format(credito) + "\t" + "€";
    }

    public String acetta50cent(String par) {
        if (par.equalsIgnoreCase("0.5")) {
            credito += 0.5;
        }
        return df.format(credito) + "\t" + "€";
    }

    public String acettaUno(String par) {
        if (par.equalsIgnoreCase("1.0")) {
            credito += 1.0;
        }
        return df.format(credito) + "\t" + "€";
    }

    public String acettaDue(String par) {
        if (par.equalsIgnoreCase("2.0")) {
            credito += 2.0;
        }
        return df.format(credito) + "\t" + "€";
    }

    public String acettaCinque(String par) {
        if (par.equalsIgnoreCase("5.0")) {
            credito += 5.0;
        }
        return df.format(credito) + "€";
    }

    public String acettaDieci(String par) {
        if (par.equalsIgnoreCase("10.0")) {
            credito += 10.0;
        }
        return df.format(credito) + "\t" + "€";
    }

    public String acettaVenti(String par) {
        if (par.equalsIgnoreCase("20.0")) {
            credito += 20.0;
        }
        return df.format(credito) + "\t" + "€";
    }

    public double getCredito() {
        return credito;
    }

    public String importoPagato() {
        return "l'importo pagato:" + "\t" + df.format(getCredito()) + "\t" + "€";
    }

    public void entraAuto(String targa, int oraentrata, int minutientrata) {
        if (nauto < MAXAUTO) {
            auto[nauto++] = new auto(targa, oraentrata, minutientrata);
        } else {
            System.err.println("posti esauriti!");
        }
    }

    public String contatorePosti() {
        String posto="";
        if (nauto <= MAXAUTO) {
            postioccupati++;
            postiliberi=MAXAUTO-postioccupati;
            posto ="posti occupati:" + "\t" + postioccupati + "\t"+ "posti liberi:" + "\t" + postiliberi + "\n";
        } else {
            postiliberi=0;
            postioccupati=MAXAUTO;
            posto="parcheggio pieno";
        }
        return posto;
    }

    public String Ticket() {
        String s = "";
        for (int i = 0; i < nauto; i++) {
            s += "ticket n°" + "\t" + nauto  + "\n"+ auto[i].ingressoAuto() + "\n";
        }
        return s;
    }

    public String numeroTicket(){
        return "ticket n°" + "\t" + nauto;
    }


public String Scontrino() {
    String s = "";
        for (int i = 0; i < nauto; i++) {
       s += "scontrino n°" + nauto + "\n" + "\n" +"l'auto:" + "\t"+ auto[i].stampaTarga()+"\n"; 
      }
        return s;
 
    }

    @Override
    public void run() {
        display.setText(getAperto());
    }

}

package parcheggio;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.text.DecimalFormat;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

public class parcheggio extends javax.swing.JDialog {

    Integer oraentrata, minutientrata, orauscita, minutiuscita;
    String targa;
    DecimalFormat df = new DecimalFormat("#,##0.00");
    calcoli c = new calcoli();

    public parcheggio(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        initComponents();
        this.setLocationRelativeTo(null);
        Thread t = new Thread(new orologio(orologio));
        t.start();
        Thread t2 = new Thread(new calcoli(display));
        t2.start();

    }
private void entraAutoActionPerformed(java.awt.event.ActionEvent evt) {                                         
        Inizializzaentrata();
        if (c.getAperto().equals("siamo aperti")) {
            c.entraAuto(targa, oraentrata, minutientrata);
            selezionaAuto.addItem(c.numeroTicket());

            try {
                FileWriter w = new FileWriter("ticket.txt");
                BufferedWriter b = new BufferedWriter(w);
                b.write(c.Ticket());
                b.flush();

            } catch (IOException ex) {
                Logger.getLogger(parcheggio.class.getName()).log(Level.SEVERE, null, ex);
            }

            txticket.setText(c.Ticket());
            lblpostiauto.setText(c.contatorePosti());
        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtoraentrata.setText("");
            txtminutientrata.setText("");
            txttarga.setText("");
            txtoraentrata.grabFocus();
            txtminutientrata.grabFocus();
            txttarga.grabFocus();
            lblpostiauto.setText("");
        }


    }                                         

    private void esceAutoActionPerformed(java.awt.event.ActionEvent evt) {                                         
        Inizializzauscita();
        if (c.getAperto().equals("siamo aperti")) {
            selezionaAuto.removeItem(c.numeroTicket());
            try {
                FileWriter w = new FileWriter("scontrino.txt");
                BufferedWriter b = new BufferedWriter(w);
                b.write(c.Scontrino());
                b.flush();

            } catch (IOException ex) {
                Logger.getLogger(parcheggio.class.getName()).log(Level.SEVERE, null, ex);
            }

            txtscontrino.setText(comunicadatiScontrino());
            //lblpostiauto.setText(c.contatorePosti());

        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtorauscita.setText("");
            txtminutiuscita.setText("");
            txttarga.setText("");
            txtorauscita.grabFocus();
            txtminutiuscita.grabFocus();
            txttarga.grabFocus();
            lblpostiauto.setText("");
        }

    }                                       

    private void acetta10centActionPerformed(java.awt.event.ActionEvent evt) {                                             
        if (c.getAperto().equals("siamo aperti")) {
            txtcredito.setText(c.acetta10cent("0.1"));
        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtcredito.setText("");
        }


    }                                           

    private void acetta20centActionPerformed(java.awt.event.ActionEvent evt) {                                             
        if (c.getAperto().equals("siamo aperti")) {
            txtcredito.setText(c.acetta20cent("0.2"));
        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtcredito.setText("");
        }

    }                                           

    private void acetta50centActionPerformed(java.awt.event.ActionEvent evt) {                                             

        if (c.getAperto().equals("siamo aperti")) {
            txtcredito.setText(c.acetta50cent("0.5"));
        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtcredito.setText("");
        }


    }                                           

    private void acetta1euroActionPerformed(java.awt.event.ActionEvent evt) {                                           
        if (c.getAperto().equals("siamo aperti")) {
            txtcredito.setText(c.acettaUno("1.0"));
        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtcredito.setText("");
        }

    }                                           

    private void acetta2euroActionPerformed(java.awt.event.ActionEvent evt) {                                           
        if (c.getAperto().equals("siamo aperti")) {
            txtcredito.setText(c.acettaDue("2.0"));
        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtcredito.setText("");
        }

    }                                           

    private void acetta5euroActionPerformed(java.awt.event.ActionEvent evt) {                                           
        if (c.getAperto().equals("siamo aperti")) {
            txtcredito.setText(c.acettaCinque("5.0"));
        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtcredito.setText("");
        }

    }                                           

    private void acetta10euroActionPerformed(java.awt.event.ActionEvent evt) {                                             
        if (c.getAperto().equals("siamo aperti")) {
            txtcredito.setText(c.acettaDieci("10.0"));
        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtcredito.setText("");
        }

    }                                           

    private void acetta20euroActionPerformed(java.awt.event.ActionEvent evt) {                                             
        if (c.getAperto().equals("siamo aperti")) {
            txtcredito.setText(c.acettaVenti("20.0"));
        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtcredito.setText("");
        }

    }                                           

    public void Inizializzaentrata() {
        if (txtminutientrata.getText().isEmpty() && txtoraentrata.getText().isEmpty() && txttarga.getText().isEmpty()) {
            JOptionPane.showMessageDialog(null, "inserisci il valore richiesto!", " Errore", JOptionPane.ERROR_MESSAGE);
            txtoraentrata.setText("");
            txtminutientrata.setText("");
            txttarga.setText("");
            txtoraentrata.grabFocus();
            txtminutientrata.grabFocus();
            txttarga.grabFocus();
        } else {
            try {
                oraentrata = new Integer(txtoraentrata.getText());
                minutientrata = new Integer(txtminutientrata.getText());
            } catch (Exception e) {
                JOptionPane.showMessageDialog(null, "inserisci solo valori numerici", " Errore", JOptionPane.ERROR_MESSAGE);
                txtoraentrata.setText("");
                txtminutientrata.setText("");
                txtoraentrata.grabFocus();
                txtminutientrata.grabFocus();
            }
            try {
                oraentrata = new Integer(txtoraentrata.getText());
                minutientrata = new Integer(txtminutientrata.getText());

            } catch (NumberFormatException e) {
                JOptionPane.showMessageDialog(null, "inserisci solo valori numerici interi!", " Errore", JOptionPane.ERROR_MESSAGE);
                txtoraentrata.setText("");
                txtoraentrata.grabFocus();
                txtminutientrata.setText("");
                txtminutientrata.grabFocus();

                if (oraentrata < 0) {
                    JOptionPane.showMessageDialog(null, "inserisci solo valori numerici positivi!", " Errore", JOptionPane.ERROR_MESSAGE);
                    txtoraentrata.setText("");
                    txtoraentrata.grabFocus();
                }

                if (minutientrata < 0) {
                    JOptionPane.showMessageDialog(null, "inserisci solo valori numerici positivi!", " Errore", JOptionPane.ERROR_MESSAGE);
                    txtminutientrata.setText("");
                    txtminutientrata.grabFocus();
                }

                if (oraentrata > 24) {
                    JOptionPane.showMessageDialog(null, "inserisci solo minori di 24", " Errore", JOptionPane.ERROR_MESSAGE);
                    txtoraentrata.setText("");
                    txtoraentrata.grabFocus();
                }

                if (minutientrata >= 60) {
                    JOptionPane.showMessageDialog(null, "inserisci solo minori di 60!", " Errore", JOptionPane.ERROR_MESSAGE);
                    txtminutientrata.setText("");
                    txtminutientrata.grabFocus();
                }

            }
            targa = txttarga.getText();

        }
    }

    public void Inizializzauscita() {
        if (txtminutiuscita.getText().isEmpty() && txtorauscita.getText().isEmpty() && txttarga.getText().isEmpty()) {
            JOptionPane.showMessageDialog(null, "inserisci il valore richiesto!", " Errore", JOptionPane.ERROR_MESSAGE);
            txttarga.setText("");
            txttarga.grabFocus();
            txtorauscita.setText("");
            txtminutiuscita.setText("");
            txtorauscita.grabFocus();
            txtminutiuscita.grabFocus();

        } else {
            try {
                orauscita = new Integer(txtorauscita.getText());
                minutiuscita = new Integer(txtminutiuscita.getText());
            } catch (Exception e) {
                JOptionPane.showMessageDialog(null, "inserisci solo valori numerici", " Errore", JOptionPane.ERROR_MESSAGE);
                txtorauscita.setText("");
                txtminutiuscita.setText("");
                txtorauscita.grabFocus();
                txtminutiuscita.grabFocus();
            }
            try {
                oraentrata = new Integer(txtoraentrata.getText());
                minutientrata = new Integer(txtminutientrata.getText());

            } catch (NumberFormatException e) {
                JOptionPane.showMessageDialog(null, "inserisci solo valori numerici interi!", " Errore", JOptionPane.ERROR_MESSAGE);
                txtorauscita.setText("");
                txtminutiuscita.setText("");
                txtorauscita.grabFocus();
                txtminutiuscita.grabFocus();

                if (orauscita < 0) {
                    JOptionPane.showMessageDialog(null, "inserisci solo valori numerici positivi!", " Errore", JOptionPane.ERROR_MESSAGE);
                    txtorauscita.setText("");
                    txtorauscita.grabFocus();
                }

                if (minutiuscita < 0) {
                    JOptionPane.showMessageDialog(null, "inserisci solo valori numerici positivi!", " Errore", JOptionPane.ERROR_MESSAGE);
                    txtminutiuscita.setText("");
                    txtminutiuscita.grabFocus();
                }

                if (orauscita > 24) {
                    JOptionPane.showMessageDialog(null, "inserisci solo minori di 24", " Errore", JOptionPane.ERROR_MESSAGE);
                    txtorauscita.setText("");
                    txtorauscita.grabFocus();
                }

                if (minutiuscita >= 60) {
                    JOptionPane.showMessageDialog(null, "inserisci solo minori di 60!", " Errore", JOptionPane.ERROR_MESSAGE);
                    txtminutiuscita.setText("");
                    txtminutiuscita.grabFocus();
                }

            }
            targa = txttarga.getText();

        }

    }

    public double getPrezzo() {
        int orepassate = Math.abs(oraentrata - orauscita);
        double mezzorepassate = orepassate * 2.0;
        double prezzo;
        if (orepassate <= 1) {
            prezzo = 1.80;
        } else if(orepassate==2 || mezzorepassate==3 ){
            prezzo= 3.60;
        }else if(orepassate==3 || mezzorepassate==5){
           prezzo=5.40;
        }else if(orepassate==4){
            prezzo=7.20;
        }else if(orepassate>4 && orepassate<=8 ){
            prezzo=7.50;
        }else if(orepassate>=10){
            prezzo=12.50;
        }else{
            prezzo=mezzorepassate*0.9;
        }
        return prezzo;
    }

    public String comunicaPrezzo() {
        return "lei deve pagare:" + "\t" + df.format(getPrezzo()) + "\t" + "€";
    }

    public String tempoPassato() {
        int orepassate, minutipassati;
        orepassate = Math.abs(oraentrata - orauscita);
        minutipassati = Math.abs(minutientrata - minutiuscita);
        return "ore passate:" + "\t" + orepassate + "\t" + "minuti passati:" + minutipassati;
    }

    public String daiResto() {
        double r;
        String resto = "";
        if (c.getCredito() >= getPrezzo()) {
            r = c.getCredito() - getPrezzo();
            resto = "il resto è:" + "\t" + df.format(r) + "\t" + "€";
        } else {
            r = getPrezzo() - c.getCredito();
            resto = "le deve ancora:" + "\t" + df.format(r) + "\t" + "€";
        }
        return resto;
    }

    public String comunicadatiScontrino() {
        return c.Scontrino() + "\n" + "è uscita alle:" + "\t" + orauscita + ":" + "\t" + minutiuscita + "\n" + tempoPassato() + "\n" + comunicaPrezzo() + "\n" + c.importoPagato() + "\n" + daiResto() + "\n";
    }

}

codice classe main e orologio:
Codice:
package parcheggio;

import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.JLabel;

public class orologio implements Runnable {

    JLabel orologio;
    GregorianCalendar gc;

    public orologio(JLabel orologio) {
        this.orologio = orologio;
    }
  @Override
    public void run() {
        while (true) {
            gc = new GregorianCalendar();
            int ore = gc.get(Calendar.HOUR_OF_DAY);
            int min = gc.get(Calendar.MINUTE);
            orologio.setText(ore + ":" + min);
        }
    }
  

}

package parcheggio;

import java.awt.Frame;

public class Main {

    static Frame f = new Frame();
    static  parcheggio p = new parcheggio(f, true);

    public static void main(String[] args) {
      p.setVisible(true);
    }

}

screen  prova parcheggio.jpg
screen vuoto parcheggio.jpg
 
Ultima modifica:
Il codice secondo me non è completo, prima di tutto, non possiamo provarlo. Dove viene creata ad esempio txttarga? Il discorso vale per tutte le altre, mi sembra manchi l'inizializzazione dei componenti di Swing.
Presumo manchi anche la parte di codice che setta i listener.

Poi ricordati che per convenzione i nomi delle classi devono inziare con la lettera maiuscola, non minuscola.

Non uso Java da parecchi anni, ma ci sono tante ripetizioni sugli ascoltatori degli eventi e altre cose che probabilmente riusciresti a semplificare. Dovrei provarlo però per rendermi meglio conto del funzionamento.

Ho notato però questo:

Java:
    public double getPrezzo() {
        int orepassate = Math.abs(oraentrata - orauscita);
        double mezzorepassate = orepassate * 2.0;
        double prezzo;
        if (orepassate <= 1) {
            prezzo = 1.80;
        } else if(orepassate==2 || mezzorepassate==3 ){
            prezzo= 3.60;
        }else if(orepassate==3 || mezzorepassate==5){
           prezzo=5.40;
        }else if(orepassate==4){
            prezzo=7.20;
        }else if(orepassate>4 && orepassate<=8 ){
            prezzo=7.50;
        }else if(orepassate>=10){
            prezzo=12.50;
        }else{
            prezzo=mezzorepassate*0.9;
        }
        return prezzo;
    }

La variabile "mezzorepassate" (ti prego, dai nomi adeguati alle variabili, rispettando anche le convenzioni!) non potrà mai essere 3 se orepassate è > 1; discorso analogo per il valore 5. Qualsiasi numero moltiplicato per 2, non può darti un numero dispari. L'algoritmo è sbagliato.

Che dice il testo dell'esercizio, in merito alla determinazione del prezzo?

EDIT:
Nella funzione Ticket devi stampare la variabile i, non nauto, altrimenti vedrai sempre il nr totale.
Idem per Scontrino().
 
  • Mi piace
Reazioni: MRPants
Ultima modifica:
in merito al prezzo le tariffe da impostare sono: 1 ora 1,80€ se la macchina sta meno di un ora paga comunque 1,80€, se fa 1 ora e mezza paga comunque 3,60€ come fosse 2 ore e cosi

via. dalle 4 ore e mezza ad 8 ore il prezzo è 7,50€. oltre a 10 ore il prezzo è 12,50€

ho provato a modificare i due metodi scontrino e ticket peroò non cambia molto.

Java:
public String Ticket() {

        String s = "";

        for (int i = 0; i < nauto; i++) {

            s += "ticket n°" + "\t" + i + "\n" + auto[i].ingressoAuto() + "\n";

        }

        return s;

    }

    

    public String Scontrino() {

        String s = "";

        for (int i = 0; i < nauto; i++) {

            s += "scontrino n°" + "\t" + i+ "\n" + "l'auto:" + "\t" + auto[i].stampaTarga() + "\n";

        }

        return s;


    }
[B]


questo è il codice invece che dovrebbe inizziallizare le robe swing:[/B]

Java:
public void Inizializzaentrata() {

        if (txtminutientrata.getText().isEmpty() && txtoraentrata.getText().isEmpty() && txttarga.getText().isEmpty()) {

            JOptionPane.showMessageDialog(null, "inserisci il valore richiesto!", " Errore", JOptionPane.ERROR_MESSAGE);

            txtoraentrata.setText("");

            txtminutientrata.setText("");

            txttarga.setText("");

            txtoraentrata.grabFocus();

            txtminutientrata.grabFocus();

            txttarga.grabFocus();

        } else {

            try {

                oraentrata = new Integer(txtoraentrata.getText());

                minutientrata = new Integer(txtminutientrata.getText());

            } catch (Exception e) {

                JOptionPane.showMessageDialog(null, "inserisci solo valori numerici", " Errore", JOptionPane.ERROR_MESSAGE);

                txtoraentrata.setText("");

                txtminutientrata.setText("");

                txtoraentrata.grabFocus();

                txtminutientrata.grabFocus();

            }

            try {

                oraentrata = new Integer(txtoraentrata.getText());

                minutientrata = new Integer(txtminutientrata.getText());


            } catch (NumberFormatException e) {

                JOptionPane.showMessageDialog(null, "inserisci solo valori numerici interi!", " Errore", JOptionPane.ERROR_MESSAGE);

                txtoraentrata.setText("");

                txtoraentrata.grabFocus();

                txtminutientrata.setText("");

                txtminutientrata.grabFocus();


                if (oraentrata < 0) {

                    JOptionPane.showMessageDialog(null, "inserisci solo valori numerici positivi!", " Errore", JOptionPane.ERROR_MESSAGE);

                    txtoraentrata.setText("");

                    txtoraentrata.grabFocus();

                }


                if (minutientrata < 0) {

                    JOptionPane.showMessageDialog(null, "inserisci solo valori numerici positivi!", " Errore", JOptionPane.ERROR_MESSAGE);

                    txtminutientrata.setText("");

                    txtminutientrata.grabFocus();

                }


                if (oraentrata > 24) {

                    JOptionPane.showMessageDialog(null, "inserisci solo minori di 24", " Errore", JOptionPane.ERROR_MESSAGE);

                    txtoraentrata.setText("");

                    txtoraentrata.grabFocus();

                }


                if (minutientrata >= 60) {

                    JOptionPane.showMessageDialog(null, "inserisci solo minori di 60!", " Errore", JOptionPane.ERROR_MESSAGE);

                    txtminutientrata.setText("");

                    txtminutientrata.grabFocus();

                }


            }

            targa = txttarga.getText();


        }

    }


    public void Inizializzauscita() {

        if (txtminutiuscita.getText().isEmpty() && txtorauscita.getText().isEmpty() && txttarga.getText().isEmpty()) {

            JOptionPane.showMessageDialog(null, "inserisci il valore richiesto!", " Errore", JOptionPane.ERROR_MESSAGE);

            txttarga.setText("");

            txttarga.grabFocus();

            txtorauscita.setText("");

            txtminutiuscita.setText("");

            txtorauscita.grabFocus();

            txtminutiuscita.grabFocus();


        } else {

            try {

                orauscita = new Integer(txtorauscita.getText());

                minutiuscita = new Integer(txtminutiuscita.getText());

            } catch (Exception e) {

                JOptionPane.showMessageDialog(null, "inserisci solo valori numerici", " Errore", JOptionPane.ERROR_MESSAGE);

                txtorauscita.setText("");

                txtminutiuscita.setText("");

                txtorauscita.grabFocus();

                txtminutiuscita.grabFocus();

            }

            try {

                oraentrata = new Integer(txtoraentrata.getText());

                minutientrata = new Integer(txtminutientrata.getText());


            } catch (NumberFormatException e) {

                JOptionPane.showMessageDialog(null, "inserisci solo valori numerici interi!", " Errore", JOptionPane.ERROR_MESSAGE);

                txtorauscita.setText("");

                txtminutiuscita.setText("");

                txtorauscita.grabFocus();

                txtminutiuscita.grabFocus();


                if (orauscita < 0) {

                    JOptionPane.showMessageDialog(null, "inserisci solo valori numerici positivi!", " Errore", JOptionPane.ERROR_MESSAGE);

                    txtorauscita.setText("");

                    txtorauscita.grabFocus();

                }


                if (minutiuscita < 0) {

                    JOptionPane.showMessageDialog(null, "inserisci solo valori numerici positivi!", " Errore", JOptionPane.ERROR_MESSAGE);

                    txtminutiuscita.setText("");

                    txtminutiuscita.grabFocus();

                }


                if (orauscita > 24) {

                    JOptionPane.showMessageDialog(null, "inserisci solo minori di 24", " Errore", JOptionPane.ERROR_MESSAGE);

                    txtorauscita.setText("");

                    txtorauscita.grabFocus();

                }


                if (minutiuscita >= 60) {

                    JOptionPane.showMessageDialog(null, "inserisci solo minori di 60!", " Errore", JOptionPane.ERROR_MESSAGE);

                    txtminutiuscita.setText("");

                    txtminutiuscita.grabFocus();

                }


            }

            targa = txttarga.getText();


        }


    }

la parte di codice che setta i listener è creata automaticamente dall'ide (netbeans)
Messaggio unito automaticamente:

entra auto.jpg
esce auto.jpg
entra auto.jpgesce auto.jpg
quando premo il bottone esceAuto dovrebbe aggiornare il numero di posti liberi ma invece di aumentarli mi aumenta quelli occupati.
 
No, non c'è la creazione, non stai esportando tutto il codice. Ti compila solo perchè stai usando l'IDE.
Ci sono anche funzioni come initComponents();, che non esistono, immagino siano sempre generate dall'IDE.

Dovresti rivedere le funzioni e separare la parte logica da quella che compone ad esempio le stringhe. Ci sono anche funzioni che andrebbero riviste come:

Java:
    public String contatorePosti() {
        String posto="";
        if (nauto <= MAXAUTO) {
            postioccupati++;
            postiliberi=MAXAUTO-postioccupati;
            posto ="posti occupati:" + "\t" + postioccupati + "\t"+ "posti liberi:" + "\t" + postiliberi + "\n";
        } else {
            postiliberi=0;
            postioccupati=MAXAUTO;
            posto="parcheggio pieno";
        }
        return posto;
    }

Non ti serve "postioccupati", sai già che il numero di posti occupati è dato da nauto. Ma è anche sbagliata concettualmente in quanto in una funzione che deve restituire un valore (nr di posti occupati), vai a fare un'operazione di incremento su una variabile che viene usata solo in quella porzione di codice.

in merito al prezzo le tariffe da impostare sono: 1 ora 1,80€ se la macchina sta meno di un ora paga comunque 1,80€, se fa 1 ora e mezza paga comunque 3,60€ come fosse 2 ore e cosi

via. dalle 4 ore e mezza ad 8 ore il prezzo è 7,50€. oltre a 10 ore il prezzo è 12,50€

Si, ci sono errori anche qui infatti:

Java:
        int orepassate = Math.abs(oraentrata - orauscita);
        double mezzorepassate = orepassate * 2.0;

oraentrata e orauscita sono due interi.
Dovresti tenere traccia dei minuti per capire se c'è la mezzora o no. Nel tuo codice se oraentrata=12 e orauscita=13.30, ti perdi la parte decimale e ottieni come risultato 1, e quindi avrai 2 mezzore e non 3.

Con i minuti allora riescci a capire quante mezzore sono trascorse, nel tuo caso le mezzore che vedi sono sempre pari (quindi sulle ore piene: 1h = 2, 2h = 4, 3h = 6 etc).

Un'altra cosa sbagliata è che quando scrivi sui file non chiudi il buffer.

Ma anche a livello concettuale, le Auto andrebbero nella classe Parcheggio, non nella classe Calcoli.


Qualche consiglio.

Per gli eventi: quando programmavo io in Java per gestire gli 8 pulsanti con gli importi avrei fatto un array di bottoni (JButton). Nel momento della creazione di questi bottoni (che avviene quando fai new JButton("testo");) avrei passato il testo del bottone (ottenuto da un array di 8 elementi) e avrei settato il "comando" (se non ricordo male esiste il metodo chiamato setCommand()) che avrei usato sul suo listener.

Un modo per evitare il comando è sfruttare l'array di JButton degli importi. quando viene generato un evento c'è un metodo - vado a memoria - getSource(), che ti permette di avere l'oggetto che ha generato l'evento. In questo modo ottieni direttamente il JButton che ha generato l'evento e sai quindi quale degli 8 bottoni è stato premuto.

Puoi anche gestire tutti i bottoni così, ma andresti a complicare un pò il codice.

In entrambi i modi hai 1 solo actionperformed che gestisce gli eventi dei bottoni (almeno di questi 8 che seguono la medesima logica).
Non riesco a farti esempi ora, ti linko un mio codice vecchio (sarà Java 5, avrà una decina di anni, è precedente alla data che vedi sul repo) per farti capire cosa intendo: https://bitbucket.org/DispatchCode/jminesweeper/src/master/
In particolare guarda MineSweeperView.java , e cerca le occorrenze di "campo":

Java:
private ArrayList<BottoneQuadrato> campo;

Si tratta di un array di BottoneQudrato, che se guardi non è altro che un estensione di JButton per personalizzare qualche suo aspetto. Se cerchi le occorrenze vedrai:

Java:
campo = new ArrayList<BottoneQuadrato>(righe*colonne);

E poi il modo in cui vengono aggiungi i listener:

Java:
    for(int i=0; i<righe; i++) {
      for(int j=0; j<colonne; j++) {
        BottoneQuadrato bq = new BottoneQuadrato(new Punto(i,j));
        bq.addActionListener(al);
        bq.addMouseListener(ml);
        campo.add(bq);
        panel.add(bq);
      }
    }

Nel file MinesweeperControl.java vedrai l'action performed:

Java:
  public void actionPerformed(ActionEvent ae) {
    BottoneQuadrato btn = (BottoneQuadrato) ae.getSource();
    
    Punto p = btn.getPunto();
    int res = sm.aggiornaCampo(p.getRiga(), p.getColonna());
    
    if(res == -1) {
      sm.mostraTutto();
      restituisciMappa();
      gestisciRispostaMessaggio(sv.messaggio("Hai Perso!"));
      return;
    }
    
    restituisciMappa();
    
    if(sm.controllaVittoria()) {
      gestisciRispostaMessaggio(sv.messaggio("Vittoria!"));
    }
  }
 
  • Mi piace
Reazioni: MRPants
No, non c'è la creazione, non stai esportando tutto il codice. Ti compila solo perchè stai usando l'IDE.
Ci sono anche funzioni come initComponents();, che non esistono, immagino siano sempre generate dall'IDE.
tante robe le crea l'ide su questo non ci piove.
qua sotto c'è quello generato in automatico se può servire.
Java:
   // <editor-fold defaultstate="collapsed" desc="Generated Code">                         
    private void initComponents() {

        lbloraentrata = new javax.swing.JLabel();
        lblminutientrata = new javax.swing.JLabel();
        txtoraentrata = new javax.swing.JTextField();
        txtminutientrata = new javax.swing.JTextField();
        entraAuto = new javax.swing.JButton();
        lbltarga = new javax.swing.JLabel();
        txttarga = new javax.swing.JTextField();
        orologio = new javax.swing.JLabel();
        esceAuto = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        txtscontrino = new javax.swing.JTextArea();
        acetta10cent = new javax.swing.JButton();
        acetta20cent = new javax.swing.JButton();
        acetta50cent = new javax.swing.JButton();
        acetta1euro = new javax.swing.JButton();
        acetta2euro = new javax.swing.JButton();
        acetta5euro = new javax.swing.JButton();
        acetta10euro = new javax.swing.JButton();
        acetta20euro = new javax.swing.JButton();
        txtcredito = new javax.swing.JTextField();
        lblpostiauto = new javax.swing.JLabel();
        selezionaAuto = new javax.swing.JComboBox<>();
        lblorauscita = new javax.swing.JLabel();
        lblminutiuscita = new javax.swing.JLabel();
        txtorauscita = new javax.swing.JTextField();
        txtminutiuscita = new javax.swing.JTextField();
        jScrollPane3 = new javax.swing.JScrollPane();
        display = new javax.swing.JTextArea();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Parcheggio");
        setBackground(java.awt.Color.white);

        lbloraentrata.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        lbloraentrata.setText("ora entrata:");

        lblminutientrata.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        lblminutientrata.setText("minuti entrata:");

        txtoraentrata.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        txtoraentrata.setToolTipText("");
        txtoraentrata.setName(""); // NOI18N

        txtminutientrata.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N

        entraAuto.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        entraAuto.setForeground(java.awt.Color.blue);
        entraAuto.setText("entraAuto");
        entraAuto.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                entraAutoActionPerformed(evt);
            }
        });

        lbltarga.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        lbltarga.setText("targa:");

        txttarga.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N

        orologio.setBackground(java.awt.Color.yellow);
        orologio.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        orologio.setForeground(java.awt.Color.red);
        orologio.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        orologio.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED, java.awt.Color.red, java.awt.Color.red, java.awt.Color.red, java.awt.Color.red));
        orologio.setOpaque(true);

        esceAuto.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        esceAuto.setForeground(java.awt.Color.blue);
        esceAuto.setText("esceAuto");
        esceAuto.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                esceAutoActionPerformed(evt);
            }
        });

        txtscontrino.setEditable(false);
        txtscontrino.setBackground(java.awt.Color.red);
        txtscontrino.setColumns(20);
        txtscontrino.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        txtscontrino.setForeground(java.awt.Color.yellow);
        txtscontrino.setRows(5);
        jScrollPane1.setViewportView(txtscontrino);

        acetta10cent.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        acetta10cent.setForeground(java.awt.Color.blue);
        acetta10cent.setText("0.1 €");
        acetta10cent.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                acetta10centActionPerformed(evt);
            }
        });

        acetta20cent.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        acetta20cent.setForeground(java.awt.Color.blue);
        acetta20cent.setText("0.2 €");
        acetta20cent.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                acetta20centActionPerformed(evt);
            }
        });

        acetta50cent.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        acetta50cent.setForeground(java.awt.Color.blue);
        acetta50cent.setText("0.5 €");
        acetta50cent.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                acetta50centActionPerformed(evt);
            }
        });

        acetta1euro.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        acetta1euro.setForeground(java.awt.Color.blue);
        acetta1euro.setText("1 €");
        acetta1euro.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                acetta1euroActionPerformed(evt);
            }
        });

        acetta2euro.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        acetta2euro.setForeground(java.awt.Color.blue);
        acetta2euro.setText("2 €");
        acetta2euro.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                acetta2euroActionPerformed(evt);
            }
        });

        acetta5euro.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        acetta5euro.setForeground(java.awt.Color.blue);
        acetta5euro.setText("5 €");
        acetta5euro.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                acetta5euroActionPerformed(evt);
            }
        });

        acetta10euro.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        acetta10euro.setForeground(java.awt.Color.blue);
        acetta10euro.setText("10 €");
        acetta10euro.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                acetta10euroActionPerformed(evt);
            }
        });

        acetta20euro.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        acetta20euro.setForeground(java.awt.Color.blue);
        acetta20euro.setText("20 €");
        acetta20euro.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                acetta20euroActionPerformed(evt);
            }
        });

        txtcredito.setEditable(false);
        txtcredito.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        txtcredito.setForeground(java.awt.Color.red);

        lblpostiauto.setBackground(java.awt.Color.black);
        lblpostiauto.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        lblpostiauto.setForeground(java.awt.Color.white);
        lblpostiauto.setEnabled(false);

        selezionaAuto.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        selezionaAuto.setForeground(java.awt.Color.blue);
        selezionaAuto.setToolTipText("");

        lblorauscita.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        lblorauscita.setText("ora uscita:");

        lblminutiuscita.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        lblminutiuscita.setText("minuti uscita:");

        display.setEditable(false);
        display.setColumns(20);
        display.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        display.setForeground(java.awt.Color.red);
        display.setRows(5);
        display.setEnabled(false);
        jScrollPane3.setViewportView(display);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addContainerGap(8, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(lblminutientrata, javax.swing.GroupLayout.PREFERRED_SIZE, 94, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(txtminutientrata, javax.swing.GroupLayout.PREFERRED_SIZE, 90, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addGroup(layout.createSequentialGroup()
                                .addGap(2, 2, 2)
                                .addComponent(lbloraentrata, javax.swing.GroupLayout.PREFERRED_SIZE, 92, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(txtoraentrata, javax.swing.GroupLayout.PREFERRED_SIZE, 94, javax.swing.GroupLayout.PREFERRED_SIZE)
                                .addGap(18, 18, 18)
                                .addComponent(lbltarga)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                .addComponent(txttarga, javax.swing.GroupLayout.PREFERRED_SIZE, 90, javax.swing.GroupLayout.PREFERRED_SIZE))))
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 404, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                        .addGroup(layout.createSequentialGroup()
                            .addComponent(lblminutiuscita)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(txtminutiuscita))
                        .addGroup(layout.createSequentialGroup()
                            .addComponent(lblorauscita)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(txtorauscita, javax.swing.GroupLayout.PREFERRED_SIZE, 135, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(4, 4, 4)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(lblpostiauto, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addGroup(layout.createSequentialGroup()
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                    .addGroup(layout.createSequentialGroup()
                                        .addComponent(acetta10cent)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addComponent(acetta20cent)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(acetta50cent))
                                    .addGroup(layout.createSequentialGroup()
                                        .addComponent(acetta2euro, javax.swing.GroupLayout.PREFERRED_SIZE, 61, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addGap(18, 18, 18)
                                        .addComponent(acetta5euro, javax.swing.GroupLayout.PREFERRED_SIZE, 61, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addComponent(acetta10euro)))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                    .addComponent(acetta20euro, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                    .addComponent(acetta1euro, javax.swing.GroupLayout.PREFERRED_SIZE, 61, javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(txtcredito, javax.swing.GroupLayout.PREFERRED_SIZE, 116, javax.swing.GroupLayout.PREFERRED_SIZE))))
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                        .addGroup(layout.createSequentialGroup()
                            .addContainerGap()
                            .addComponent(esceAuto, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                        .addComponent(orologio, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(jScrollPane3, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 404, Short.MAX_VALUE)
                        .addComponent(selezionaAuto, javax.swing.GroupLayout.Alignment.LEADING, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                        .addComponent(entraAuto, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
                .addContainerGap(391, Short.MAX_VALUE))
        );

        layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {lblminutientrata, lbloraentrata});

        layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {lblminutiuscita, lblorauscita, txtminutiuscita, txtorauscita});

        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(orologio, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(selezionaAuto, javax.swing.GroupLayout.PREFERRED_SIZE, 51, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lbloraentrata)
                    .addComponent(txtoraentrata)
                    .addComponent(lbltarga)
                    .addComponent(txttarga, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(37, 37, 37)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lblminutientrata, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(txtminutientrata))
                .addGap(18, 18, 18)
                .addComponent(entraAuto)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(acetta10cent)
                            .addComponent(acetta20cent)
                            .addComponent(acetta50cent)
                            .addComponent(acetta1euro))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(acetta2euro)
                            .addComponent(acetta5euro)
                            .addComponent(acetta10euro)
                            .addComponent(acetta20euro)))
                    .addComponent(txtcredito, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(2, 2, 2)
                .addComponent(lblpostiauto, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(esceAuto)
                .addGap(7, 7, 7)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lblorauscita)
                    .addComponent(txtorauscita, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lblminutiuscita)
                    .addComponent(txtminutiuscita, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 106, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(298, 298, 298))
        );

        layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {lblminutiuscita, lblorauscita, txtminutiuscita, txtorauscita});

        pack();
    }// </editor-fold>                       

// Variables declaration - do not modify                     
    private javax.swing.JButton acetta10cent;
    private javax.swing.JButton acetta10euro;
    private javax.swing.JButton acetta1euro;
    private javax.swing.JButton acetta20cent;
    private javax.swing.JButton acetta20euro;
    private javax.swing.JButton acetta2euro;
    private javax.swing.JButton acetta50cent;
    private javax.swing.JButton acetta5euro;
    private javax.swing.JTextArea display;
    private javax.swing.JButton entraAuto;
    private javax.swing.JButton esceAuto;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JLabel lblminutientrata;
    private javax.swing.JLabel lblminutiuscita;
    private javax.swing.JLabel lbloraentrata;
    private javax.swing.JLabel lblorauscita;
    private javax.swing.JLabel lblpostiauto;
    private javax.swing.JLabel lbltarga;
    private javax.swing.JLabel orologio;
    private javax.swing.JComboBox<String> selezionaAuto;
    private javax.swing.JTextField txtcredito;
    private javax.swing.JTextField txtminutientrata;
    private javax.swing.JTextField txtminutiuscita;
    private javax.swing.JTextField txtoraentrata;
    private javax.swing.JTextField txtorauscita;
    private javax.swing.JTextArea txtscontrino;
    private javax.swing.JTextField txttarga;
    // End of variables declaration                   

valido x tutti i bottoni che vengono cliccati:
 [B]private void acetta10euroActionPerformed(java.awt.event.ActionEvent evt) {[/B]

ho modificato il metodo del prezzo:
Java:
public double getPrezzo() {
        int orepassate = Math.abs(oraentrata - orauscita);
        double prezzo=0;
        int diffMin= Math.abs(minutientrata-minutiuscita);
        if (orepassate <= 1 ) {
            prezzo = 1.80;
        } else if(orepassate==1 && diffMin>=30 || orepassate==2   ){
           prezzo= 3.60;
        }else if(orepassate==2 && diffMin >=30 || orepassate==3 ){
           prezzo=5.40;
        }else if(orepassate==3 && diffMin >=30 || orepassate==4 ){
            prezzo=7.20;
        }else if(orepassate==4 && diffMin>=30|| orepassate<=8  ){
            prezzo=7.50;
        }else if(orepassate<=10 ){
            prezzo=7.50+1.80;
        }else{
            prezzo=12.50;
        }
        return prezzo;
    }

 FileWriter w = new FileWriter("ticket.txt");
                BufferedWriter b = new BufferedWriter(w);
                b.write(c.Ticket());
                b.flush();
               [B] b.close(); cosi dovrebbe essre chiuso il buffer spero?[/B]
Ma anche a livello concettuale, le Auto andrebbero nella classe Parcheggio, non nella classe Calcoli.
dovrei mettere il vettore di auto dentro a parcheggio o dirremante tutta la classe auto ? perchè in tal caso elimino proprio classe auto.
per ora comunque i due bug degli scontrini e dei ticket non so perchè non lo risolti. come vedi nelle immagini che ho postato.
 
tante robe le crea l'ide su questo non ci piove.
qua sotto c'è quello generato in automatico se può servire.

Ma è stato il prof a chiedere di usare un IDE per disegnare la GUI?
La generazione automatica del codice per quanto renda rapida la creazione della GUI non ti fa capire un sacco di cose... e soprattutto produce un codice orribile. In un contesto di studio secondo me è meglio crearsela a mano.

ho modificato il metodo del prezzo:
Java:
public double getPrezzo() {
        int orepassate = Math.abs(oraentrata - orauscita);
        double prezzo=0;
        int diffMin= Math.abs(minutientrata-minutiuscita);
        if (orepassate <= 1 ) {
            prezzo = 1.80;
        } else if(orepassate==1 && diffMin>=30 || orepassate==2   ){
           prezzo= 3.60;
        }else if(orepassate==2 && diffMin >=30 || orepassate==3 ){
           prezzo=5.40;
        }else if(orepassate==3 && diffMin >=30 || orepassate==4 ){
            prezzo=7.20;
        }else if(orepassate==4 && diffMin>=30|| orepassate<=8  ){
            prezzo=7.50;
        }else if(orepassate<=10 ){
            prezzo=7.50+1.80;
        }else{
            prezzo=12.50;
        }
        return prezzo;
    }

 FileWriter w = new FileWriter("ticket.txt");
                BufferedWriter b = new BufferedWriter(w);
                b.write(c.Ticket());
                b.flush();
               [B] b.close(); cosi dovrebbe essre chiuso il buffer spero?[/B]
Si, il close è corretto.

Ricordati di usare le parentesi quando combini AND e OR: racchiudi le condizioni (è anche più leggibile ed eviti errori dovuti alla precedenza delle operazioni).

Sicuramente è semplificabile, ma meglio concentrarsi prima sul resto e far funzionare il codice; poi si passa alla pulizia. ;)

dovrei mettere il vettore di auto dentro a parcheggio o dirremante tutta la classe auto ? perchè in tal caso elimino proprio classe auto.

La classe Auto è corretta, è giusto che modelli un'auto.Ti consiglio però di rispettare le convenzioni del linguaggio: la classe deve chiamarsi Auto, non auto. Vale lo stesso discorso per le altre classi.

L'errore a cui mi riferisco è dato all'array delle auto. Un parcheggio ospita al suo interno delle auto, e per ciascuna auto ci sarà un biglietto/ticket da pagare. E' quindi corretto che le auto stiano nella classe Parcheggio, e non in quella dei Calcoli. Quindi andrebbero spostati tutti gli elementi che hanno a che fare con le auto (la costante del numero MAX di auto, la combo box etc).

per ora comunque i due bug degli scontrini e dei ticket non so perchè non lo risolti. come vedi nelle immagini che ho postato.

Verifica usando ad esempio il Logger quante volte entra nella funzione che aggiunge le auto (quella che poi aggiunge elementi alla JComboBox). Sospetto sia dovuto ad altro però.

Prima correggi però quanto detto qui sopra, poi ci sono altre cose da sistemare: il metodo contatorePosti() deve andare anche lui nel Parcheggio ad esempio (è il parcheggio a sapere quanti posti sono disponibili e quanti occupati).

Ma il prof non vi ha spiegato come progettare le classi che andate a scrivere e come separare la parte grafica dal "dati" che manipola il software? E' una delle cose più importanti.
 
Ultima modifica:
ho fatto delle modifiche al codice propabilmente messo cosi ti piacera di più però il problema degli scontrini e dei ticket rimane.

Java:
package parcheggio;

import java.text.DecimalFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.JComboBox;
import javax.swing.JTextArea;

public class Parcheggio implements Runnable {

    int nauto;
    static final int MAXAUTO = 200;
    Auto[] auto;
    double credito;
    GregorianCalendar gc;
    DecimalFormat df = new DecimalFormat("#,##0.00");
    int postiliberi,postioccupati, orauscita, minutiuscita, oraentrata, minutientrata;
    JTextArea display;
    JComboBox selezionaAuto;

    public Parcheggio() {
        this.auto = new Auto[MAXAUTO];
        this.nauto = 0;
        this.selezionaAuto = new JComboBox();

    }
 
    public Parcheggio(JTextArea display) {
        this.display = display;
    }

    public int getAuto() {
        return nauto;
    }

    public Auto getAuto(int i) {
        return auto[i];
    }

    public String getAperto() {
        while (true) {
            gc = new GregorianCalendar();
            int ore = gc.get(Calendar.HOUR_OF_DAY);
            int oraapertura = 8;
            int orachiusura = 24;
            if (ore >= oraapertura && ore <= orachiusura) {
                return "siamo aperti";
            } else {
                return "siamo chiusi" + "\n" + "l'orario apertura è  dalle:" + "\t" + oraapertura + "alle:" + "\t" + orachiusura;
            }
        }
    }
   
   

    public String acetta10cent(String par) {
        if (par.equalsIgnoreCase("0.1")) {
            credito += 0.1;
        }
        return df.format(credito) + "\t" + "€";

    }

    public String acetta20cent(String par) {
        if (par.equalsIgnoreCase("0.2")) {
            credito += 0.2;
        }
        return df.format(credito) + "\t" + "€";
    }

    public String acetta50cent(String par) {
        if (par.equalsIgnoreCase("0.5")) {
            credito += 0.5;
        }
        return df.format(credito) + "\t" + "€";
    }

    public String acettaUno(String par) {
        if (par.equalsIgnoreCase("1.0")) {
            credito += 1.0;
        }
        return df.format(credito) + "\t" + "€";
    }

    public String acettaDue(String par) {
        if (par.equalsIgnoreCase("2.0")) {
            credito += 2.0;
        }
        return df.format(credito) + "\t" + "€";
    }

    public String acettaCinque(String par) {
        if (par.equalsIgnoreCase("5.0")) {
            credito += 5.0;
        }
        return df.format(credito) + "€";
    }

    public String acettaDieci(String par) {
        if (par.equalsIgnoreCase("10.0")) {
            credito += 10.0;
        }
        return df.format(credito) + "\t" + "€";
    }

    public String acettaVenti(String par) {
        if (par.equalsIgnoreCase("20.0")) {
            credito += 20.0;
        }
        return df.format(credito) + "\t" + "€";
    }

    public double getCredito() {
        return credito;
    }

    public String importoPagato() {
        return "l'importo pagato:" + "\t" + df.format(getCredito()) + "\t" + "€";
    }

    public void entraAuto(String targa) {
        if (nauto < MAXAUTO) {
            auto[nauto++] = new Auto(targa);
       } else {
            System.err.println("posti esauriti!");
        }
    }

    public String contatorePosti() {
        String posto = "";
        if (nauto <= MAXAUTO) {
            postioccupati++;
            postiliberi = MAXAUTO - postioccupati;
            posto = "posti liberi:" + "\t" + postiliberi + "\t" + "posti occupati:" + "\t" + postioccupati;
        } else {
            postiliberi = 0;
            postioccupati = MAXAUTO;
            posto = "posti esauriti!";
        }
        return posto;
    }
  public double getPrezzo() {
        int orepassate = Math.abs(oraentrata - orauscita);
        double prezzo=0;
        int diffMin= Math.abs(minutientrata-minutiuscita);
        if (orepassate <= 1 ) {
            prezzo = 1.80;
        } else if((orepassate==1 && diffMin>=30) || orepassate==2   ){
           prezzo= 3.60;
        }else if((orepassate==2 && diffMin >=30) || orepassate==3 ){
           prezzo=5.40;
        }else if((orepassate==3 && diffMin >=30) || orepassate==4 ){
            prezzo=7.20;
        }else if((orepassate==4 && diffMin>=30)|| orepassate<=8  ){
            prezzo=7.50;
        }else if(orepassate<=10 ){
            prezzo=7.50+1.80;
        }else{
            prezzo=12.50;
        }
        return prezzo;
    }

    public String comunicaPrezzo() {
        return "lei deve pagare:" + "\t" + df.format(getPrezzo()) + "\t" + "€";
    }

    public String tempoPassato() {
        int orepassate, minutipassati;
        orepassate = Math.abs(oraentrata - orauscita);
        minutipassati = Math.abs(minutientrata - minutiuscita);
        return "ore passate:" + "\t" + orepassate + "\t" + "minuti passati:" + minutipassati;
    }

    public String daiResto() {
        double r;
        String resto = "";
        if (getCredito() >= getPrezzo()) {
            r = getCredito() - getPrezzo();
            resto = "il resto è:" + "\t" + df.format(r) + "\t" + "€";
        } else {
            r = getPrezzo() -getCredito();
            resto = "le deve ancora:" + "\t" + df.format(r) + "\t" + "€";
        }
        return resto;
    }

   public String stampaorarioEntrata() {
         return  "è entrata alle:" + "\t" + oraentrata + ":" + minutientrata;
    }
 
    public String Ticket() {
        String s = "";
        for (int i = 0; i < nauto; i++) {
            s += "ticket n°" + "\t" + i + "\n" + auto[i].stampaTarga() + "\n" + stampaorarioEntrata() + "\n";

        }
        return s;
    }
 public String stampaorarioUscita() {
         return   "\n" + "è uscita alle:" + "\t" + orauscita + ":" + "\t" + minutiuscita ;
    }
 
    public String Scontrino() {
        String s = "";
        s = "";
        for (int i = 0; i < nauto; i++) {
            s += "scontrino n°" + "\t" + i + "\n" + "l'auto:" + "\t" + auto[i].stampaTarga()+stampaorarioUscita()  +"\n" + tempoPassato() + "\n" + comunicaPrezzo() + "\n" + importoPagato() + "\n" + daiResto() + "\n";
        }

        return s;

    }

    @Override
    public void run() {
        display.setText(getAperto());
    }

}

package parcheggio;

public class Auto {

    String targa;

    public Auto(String targa) {
        this.targa = targa;
    }
 

    public String stampaTarga() {
        return  targa;
    }

}
package parcheggio;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

public class Interfaccia extends javax.swing.JDialog {

    Integer oraentrata, minutientrata, orauscita, minutiuscita;
    String targa;
    Parcheggio p;

    public Interfaccia(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        initComponents();
        this.setLocationRelativeTo(null);
        Thread t = new Thread(new orologio(orologio));
        t.start();
        Thread t2 = new Thread(new Parcheggio(display));
        t2.start();
        p=new Parcheggio();

    }
   
   
    private void entraAutoActionPerformed(java.awt.event.ActionEvent evt) {                                        
        inizializzaEntrata();
        if (p.getAperto().equals("siamo aperti")) {
            p.entraAuto(targa);
            selezionaAuto.addItem(p.Ticket() + "\n");
            try {
                FileWriter w = new FileWriter("ticket.txt");
                BufferedWriter b = new BufferedWriter(w);
                b.write(p.Ticket() + "\n");
                b.flush();
                b.close();

            } catch (IOException ex) {
                Logger.getLogger(Interfaccia.class.getName()).log(Level.SEVERE, null, ex);
            }

            lblpostiauto.setText(p.contatorePosti());

        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtoraentrata.setText("");
            txtminutientrata.setText("");
            txttarga.setText("");
            txtoraentrata.grabFocus();
            txtminutientrata.grabFocus();
            txttarga.grabFocus();
            lblpostiauto.setText("");
        }


    }                                        

    private void esceAutoActionPerformed(java.awt.event.ActionEvent evt) {                                        
        inizializzaUscita();
        if (p.getAperto().equals("siamo aperti")) {
            try {
                FileWriter w = new FileWriter("scontrino.txt");
                BufferedWriter b = new BufferedWriter(w);
                b.write(p.Scontrino() + "\n");
                b.flush();
                b.close();

            } catch (IOException ex) {
                Logger.getLogger(Interfaccia.class.getName()).log(Level.SEVERE, null, ex);
            }

            txtscontrino.setText(p.Scontrino() + "\n");
            selezionaAuto.removeItem(p.Ticket());

        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtorauscita.setText("");
            txtminutiuscita.setText("");
            txttarga.setText("");
            txtorauscita.grabFocus();
            txtminutiuscita.grabFocus();
            txttarga.grabFocus();
            lblpostiauto.setText("");
        }

    }                                      

    private void acetta10centActionPerformed(java.awt.event.ActionEvent evt) {                                            
        if (p.getAperto().equals("siamo aperti")) {
            txtcredito.setText(p.acetta10cent("0.1"));
        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtcredito.setText("");
        }


    }                                          

    private void acetta20centActionPerformed(java.awt.event.ActionEvent evt) {                                            
        if (p.getAperto().equals("siamo aperti")) {
            txtcredito.setText(p.acetta20cent("0.2"));
        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtcredito.setText("");
        }

    }                                          

    private void acetta50centActionPerformed(java.awt.event.ActionEvent evt) {                                            

        if (p.getAperto().equals("siamo aperti")) {
            txtcredito.setText(p.acetta50cent("0.5"));
        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtcredito.setText("");
        }


    }                                          

    private void acetta1euroActionPerformed(java.awt.event.ActionEvent evt) {                                          
        if (p.getAperto().equals("siamo aperti")) {
            txtcredito.setText(p.acettaUno("1.0"));
        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtcredito.setText("");
        }

    }                                          

    private void acetta2euroActionPerformed(java.awt.event.ActionEvent evt) {                                          
        if (p.getAperto().equals("siamo aperti")) {
            txtcredito.setText(p.acettaDue("2.0"));
        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtcredito.setText("");
        }

    }                                          

    private void acetta5euroActionPerformed(java.awt.event.ActionEvent evt) {                                          
        if (p.getAperto().equals("siamo aperti")) {
            txtcredito.setText(p.acettaCinque("5.0"));
        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtcredito.setText("");
        }

    }                                          

    private void acetta10euroActionPerformed(java.awt.event.ActionEvent evt) {                                            
        if (p.getAperto().equals("siamo aperti")) {
            txtcredito.setText(p.acettaDieci("10.0"));
        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtcredito.setText("");
        }

    }                                          

    private void acetta20euroActionPerformed(java.awt.event.ActionEvent evt) {                                            
        if (p.getAperto().equals("siamo aperti")) {
            txtcredito.setText(p.acettaVenti("20.0"));
        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtcredito.setText("");
        }

    }  
   
     public void inizializzaEntrata() {
        if (txtminutientrata.getText().isEmpty() && txtoraentrata.getText().isEmpty() && txttarga.getText().isEmpty()) {
            JOptionPane.showMessageDialog(null, "inserisci il valore richiesto!", " Errore", JOptionPane.ERROR_MESSAGE);
            txtoraentrata.setText("");
            txtminutientrata.setText("");
            txttarga.setText("");
            txtoraentrata.grabFocus();
            txtminutientrata.grabFocus();
            txttarga.grabFocus();
        } else {
            try {
                oraentrata = new Integer(txtoraentrata.getText());
                minutientrata = new Integer(txtminutientrata.getText());
            } catch (Exception e) {
                JOptionPane.showMessageDialog(null, "inserisci solo valori numerici", " Errore", JOptionPane.ERROR_MESSAGE);
                txtoraentrata.setText("");
                txtminutientrata.setText("");
                txtoraentrata.grabFocus();
                txtminutientrata.grabFocus();
            }
            try {
                oraentrata = new Integer(txtoraentrata.getText());
                minutientrata = new Integer(txtminutientrata.getText());

            } catch (NumberFormatException e) {
                JOptionPane.showMessageDialog(null, "inserisci solo valori numerici interi!", " Errore", JOptionPane.ERROR_MESSAGE);
                txtoraentrata.setText("");
                txtoraentrata.grabFocus();
                txtminutientrata.setText("");
                txtminutientrata.grabFocus();

                if (oraentrata < 0) {
                    JOptionPane.showMessageDialog(null, "inserisci solo valori numerici positivi!", " Errore", JOptionPane.ERROR_MESSAGE);
                    txtoraentrata.setText("");
                    txtoraentrata.grabFocus();
                }

                if (minutientrata < 0) {
                    JOptionPane.showMessageDialog(null, "inserisci solo valori numerici positivi!", " Errore", JOptionPane.ERROR_MESSAGE);
                    txtminutientrata.setText("");
                    txtminutientrata.grabFocus();
                }

                if (oraentrata > 24) {
                    JOptionPane.showMessageDialog(null, "inserisci solo minori di 24", " Errore", JOptionPane.ERROR_MESSAGE);
                    txtoraentrata.setText("");
                    txtoraentrata.grabFocus();
                }

                if (minutientrata >= 60) {
                    JOptionPane.showMessageDialog(null, "inserisci solo minori di 60!", " Errore", JOptionPane.ERROR_MESSAGE);
                    txtminutientrata.setText("");
                    txtminutientrata.grabFocus();
                }

            }
            targa = txttarga.getText();
            p.minutientrata=minutientrata;
            p.oraentrata=oraentrata;
           
        }

    }

    public void inizializzaUscita() {
        if (txtminutiuscita.getText().isEmpty() && txtorauscita.getText().isEmpty()) {
            JOptionPane.showMessageDialog(null, "inserisci il valore richiesto!", " Errore", JOptionPane.ERROR_MESSAGE);
            txtorauscita.setText("");
            txtminutiuscita.setText("");
            txtorauscita.grabFocus();
            txtminutiuscita.grabFocus();

        } else {
            try {
                orauscita = new Integer(txtorauscita.getText());
                minutiuscita = new Integer(txtminutiuscita.getText());

            } catch (Exception e) {
                JOptionPane.showMessageDialog(null, "inserisci solo valori numerici", " Errore", JOptionPane.ERROR_MESSAGE);
                txtorauscita.setText("");
                txtminutiuscita.setText("");
                txtorauscita.grabFocus();
                txtminutiuscita.grabFocus();
            }
            try {
                orauscita = new Integer(txtorauscita.getText());
                minutiuscita = new Integer(txtminutiuscita.getText());

            } catch (NumberFormatException e) {
                JOptionPane.showMessageDialog(null, "inserisci solo valori numerici interi!", " Errore", JOptionPane.ERROR_MESSAGE);
                txtorauscita.setText("");
                txtminutiuscita.setText("");
                txtorauscita.grabFocus();
                txtminutiuscita.grabFocus();

                if (orauscita < 0) {
                    JOptionPane.showMessageDialog(null, "inserisci solo valori numerici positivi!", " Errore", JOptionPane.ERROR_MESSAGE);
                    txtorauscita.setText("");
                    txtorauscita.grabFocus();
                }

                if (minutiuscita < 0) {
                    JOptionPane.showMessageDialog(null, "inserisci solo valori numerici positivi!", " Errore", JOptionPane.ERROR_MESSAGE);
                    txtminutiuscita.setText("");
                    txtminutiuscita.grabFocus();
                }

                if (orauscita > 24) {
                    JOptionPane.showMessageDialog(null, "inserisci solo minori di 24", " Errore", JOptionPane.ERROR_MESSAGE);
                    txtorauscita.setText("");
                    txtorauscita.grabFocus();
                }

                if (minutiuscita >= 60) {
                    JOptionPane.showMessageDialog(null, "inserisci solo minori di 60!", " Errore", JOptionPane.ERROR_MESSAGE);
                    txtminutiuscita.setText("");
                    txtminutiuscita.grabFocus();
                }

            }
            p.minutiuscita=minutiuscita;
            p.orauscita=orauscita;
        }

    }

}
ovviamente non ho postato il codice che genera l'ide.
Messaggio unito automaticamente:

ho notato che nel eseguire per lo meno stampa in modo più ordinato. però l'obiettivo e che stampi un solo scontrino riferito ad un ticket che dovrebbe essere selezionato dalla combobox. le idee che ho funzionano solo con un numero limitato di auto non saprei svilluparle per un numero illimitato di auto.
scontrino n° 0
l'auto: rr
è uscita alle: 22: 11
ore passate: 14 minuti passati:11
lei deve pagare: 12,50 €
l'importo pagato: 20,00 €
il resto è: 7,50 €
scontrino n° 1
l'auto: uuifffjhf
è uscita alle: 22: 11
ore passate: 14 minuti passati:11
lei deve pagare: 12,50 €
l'importo pagato: 20,00 €
il resto è: 7,50 €
Messaggio unito automaticamente:

ultima modifica di codice:
Java:
public class Interfaccia extends javax.swing.JDialog {

    Integer oraentrata, minutientrata, orauscita, minutiuscita,postiliberi,postioccupati;
    String targa;
    Parcheggio p;

    public Interfaccia(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        initComponents();
        this.setLocationRelativeTo(null);
        Thread t = new Thread(new orologio(orologio));
        t.start();
        Thread t2 = new Thread(new Parcheggio(display));
        t2.start();
        p=new Parcheggio();
        postiliberi=p.massimoauto;
        postioccupati=0;

    }
    
    public class Parcheggio implements Runnable {

    int nauto;
    static final int MAXAUTO = 200;
    Auto[] auto;
    double credito;
    GregorianCalendar gc;
    DecimalFormat df = new DecimalFormat("#,##0.00");
    int  orauscita, minutiuscita, oraentrata, minutientrata;
    JTextArea display;
    JComboBox selezionaAuto;
    int massimoauto;

    public Parcheggio() {
        this.auto = new Auto[MAXAUTO];
        this.nauto = 0;
        this.selezionaAuto = new JComboBox();
        this.massimoauto=MAXAUTO;

    }
    
    


inizializzaEntrata();
        if (p.getAperto().equals("siamo aperti")) {
            p.entraAuto(targa);
            selezionaAuto.addItem(p.Ticket() + "\n");
            try {
                FileWriter w = new FileWriter("ticket.txt");
                BufferedWriter b = new BufferedWriter(w);
                b.write(p.Ticket() + "\n");
                b.flush();
                b.close();

            } catch (IOException ex) {
                Logger.getLogger(Interfaccia.class.getName()).log(Level.SEVERE, null, ex);
            }
            postiliberi--;
            postioccupati++;
            if(postioccupati==p.massimoauto){
               lblpostiauto.setText("posti esauriti");
            }else{
                lblpostiauto.setText("posti liberi:"+postiliberi+"\t"+"postioccupati"+postioccupati);
            }
            
        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtoraentrata.setText("");
            txtminutientrata.setText("");
            txttarga.setText("");
            txtoraentrata.grabFocus();
            txtminutientrata.grabFocus();
            txttarga.grabFocus();
            lblpostiauto.setText("");
        }

 inizializzaUscita();
        if (p.getAperto().equals("siamo aperti")) {
            try {
                FileWriter w = new FileWriter("scontrino.txt");
                BufferedWriter b = new BufferedWriter(w);
                b.write(p.Scontrino() + "\n");
                b.flush();
                b.close();

            } catch (IOException ex) {
                Logger.getLogger(Interfaccia.class.getName()).log(Level.SEVERE, null, ex);
            }

            txtscontrino.setText(p.Scontrino() + "\n");
            selezionaAuto.removeItem(p.Ticket());
            
            postiliberi++;
            postioccupati--;
            lblpostiauto.setText("posti liberi:"+postiliberi+"\t"+"postioccupati"+postioccupati);

        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtorauscita.setText("");
            txtminutiuscita.setText("");
            txttarga.setText("");
            txtorauscita.grabFocus();
            txtminutiuscita.grabFocus();
            txttarga.grabFocus();
            lblpostiauto.setText("");
        }
facendo cosi ho eliminato il vecchio metodo che contava i posti.
Messaggio unito automaticamente:

mi esce sempre non hai l'auto
Java:
public String esceAuto(String targa) {

        String s = "";

        if (selezionaAuto.getSelectedItem() ==targa ) {

            s = Scontrino();

        } else {

            s = "non hai selezionato l' auto!";

        }

        return s;

    }
 
Ultima modifica:
ho eliminato il metodo esce auto al suo posto ho fatto questo:

Java:
private void esceAutoActionPerformed(java.awt.event.ActionEvent evt) {                                         
        inizializzaUscita();
        if (p.getAperto().equals("siamo aperti")) {
        [B]    if (selezionaAuto.getSelectedItem().equals(targa)) {[/B]
                try {
                    FileWriter w = new FileWriter("scontrino.txt");
                    BufferedWriter b = new BufferedWriter(w);
                    b.write(p.Scontrino() + "\n");
                    b.flush();
                    b.close();

                } catch (IOException ex) {
                    Logger.getLogger(Interfaccia.class.getName()).log(Level.SEVERE, null, ex);
                }
                txtscontrino.setText(p.Scontrino());
                postiliberi++;
                postioccupati--;
                [B]selezionaAuto.removeItem(targa);[/B]
                lblpostiauto.setText("posti liberi:" + postiliberi + "\t" + "postioccupati" + postioccupati);
         [B]   } else {
                txtscontrino.setText("non hai selezionato l'auto!");
            }[/B]

        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtorauscita.setText("");
            txtminutiuscita.setText("");
            txttarga.setText("");
            txtorauscita.grabFocus();
            txtminutiuscita.grabFocus();
            txttarga.grabFocus();
            lblpostiauto.setText("");
        }

    }
mi sono usciti questi risultati e nell'immagine c'è scritto il problema vorrei risolverli
risultato prima macchina.jpg


risultato seconda macchina macchina.jpg

scontrino n° 0
l'auto: rr

è uscita alle: 22: 11
ore passate: 11 minuti passati:11
lei deve pagare: 12,50 €
l'importo pagato: 20,00 €
il resto è: 7,50 €
scontrino n° 1
l'auto: uu

è uscita alle: 22: 11
ore passate: 11 minuti passati:11
lei deve pagare: 12,50 €
l'importo pagato: 20,00 €
il resto è: 7,50 €
cosi è come lo stampa.
Messaggio unito automaticamente:

allora ho quasi risolto adesso riesco a far stampare gli scontrini in base alla targa scelta. ma mi esce come prima parte di stampa questo risultato qua:
scontrino n° 0
l'auto: rrè uscita alle: 23 : 55è uscita alle: 23 : 55
l'indice dello scontrino rimane invariato in più stampa 2 volte lo stesso risultao dell'orario di uscita.

qua sotto il codice di tutto:

Java:
classe auto.
    
    package parcheggio;

public class Auto {

    String targa;
    int ora,minuti;

    public Auto(String targa, int ora, int minuti) {
        this.targa = targa;
        this.minuti=minuti;
        this.ora=ora;
    }
  
    public String stampaTarga() {
        return  targa;
    }
    
    public String stampaOrarioEntrata(int ora,int minuti){
        return "è entrata alle:"+"\t"+ora+"\t"+":"+"\t"+minuti;
    }
    
    public String stampaOrarioUscita(int ora, int minuti){
        return "è uscita alle:"+"\t"+ora+"\t"+":"+"\t"+minuti;
    }

}

classe parcheggio

package parcheggio;

import java.text.DecimalFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.JComboBox;
import javax.swing.JTextArea;

public class Parcheggio implements Runnable {

    int nauto;
    static final int MAXAUTO = 200;
    Auto[] auto;
    double credito;
    GregorianCalendar gc;
    DecimalFormat df = new DecimalFormat("#,##0.00");
    int orauscita, minutiuscita, oraentrata, minutientrata;
    JTextArea display;
    JComboBox selezionaAuto;
    int massimoauto;

    public Parcheggio() {
        this.auto = new Auto[MAXAUTO];
        this.nauto = 0;
        this.selezionaAuto = new JComboBox();
        this.massimoauto = MAXAUTO;

    }

    public Parcheggio(JTextArea display) {
        this.display = display;
    }

    public int getAuto() {
        return nauto;
    }

    public Auto getAuto(int i) {
        return auto[i];
    }

    public String getAperto() {
        while (true) {
            gc = new GregorianCalendar();
            int ore = gc.get(Calendar.HOUR_OF_DAY);
            int oraapertura = 8;
            int orachiusura = 24;
            if (ore >= oraapertura && ore <= orachiusura) {
                return "siamo aperti";
            } else {
                return "siamo chiusi" + "\n" + "l'orario apertura è  dalle:" + "\t" + oraapertura + "alle:" + "\t" + orachiusura;
            }
        }
    }

    public String acetta10cent(String par) {
        if (par.equalsIgnoreCase("0.1")) {
            credito += 0.1;
        }
        return df.format(credito) + "\t" + "€";

    }

    public String acetta20cent(String par) {
        if (par.equalsIgnoreCase("0.2")) {
            credito += 0.2;
        }
        return df.format(credito) + "\t" + "€";
    }

    public String acetta50cent(String par) {
        if (par.equalsIgnoreCase("0.5")) {
            credito += 0.5;
        }
        return df.format(credito) + "\t" + "€";
    }

    public String acettaUno(String par) {
        if (par.equalsIgnoreCase("1.0")) {
            credito += 1.0;
        }
        return df.format(credito) + "\t" + "€";
    }

    public String acettaDue(String par) {
        if (par.equalsIgnoreCase("2.0")) {
            credito += 2.0;
        }
        return df.format(credito) + "\t" + "€";
    }

    public String acettaCinque(String par) {
        if (par.equalsIgnoreCase("5.0")) {
            credito += 5.0;
        }
        return df.format(credito) + "€";
    }

    public String acettaDieci(String par) {
        if (par.equalsIgnoreCase("10.0")) {
            credito += 10.0;
        }
        return df.format(credito) + "\t" + "€";
    }

    public String acettaVenti(String par) {
        if (par.equalsIgnoreCase("20.0")) {
            credito += 20.0;
        }
        return df.format(credito) + "\t" + "€";
    }

    public double getCredito() {
        return credito;
    }

    public String importoPagato() {
        return "l'importo pagato:" + "\t" + df.format(getCredito()) + "\t" + "€";
    }

    public void entraAuto(String targa, int oraentrata, int minutientrata) {
        if (nauto < MAXAUTO) {
            auto[nauto++] = new Auto(targa, oraentrata, minutientrata);

        } else {
            System.err.println("posti esauriti!");
        }
    }

    public double getPrezzo() {
        int orepassate = Math.abs(oraentrata - orauscita);
        double prezzo = 0;
        int diffMin = Math.abs(minutientrata - minutiuscita);
        if (orepassate <= 1) {
            prezzo = 1.80;
        } else if ((orepassate == 1 && diffMin >= 30) || orepassate == 2) {
            prezzo = 3.60;
        } else if ((orepassate == 2 && diffMin >= 30) || orepassate == 3) {
            prezzo = 5.40;
        } else if ((orepassate == 3 && diffMin >= 30) || orepassate == 4) {
            prezzo = 7.20;
        } else if ((orepassate == 4 && diffMin >= 30) || orepassate <= 8) {
            prezzo = 7.50;
        } else if (orepassate <= 10) {
            prezzo = 7.50 + 1.80;
        } else {
            prezzo = 12.50;
        }
        return prezzo;
    }

    public String comunicaPrezzo() {
        return "lei deve pagare:" + "\t" + df.format(getPrezzo()) + "\t" + "€";
    }

    public String tempoPassato() {
        int orepassate, minutipassati;
        orepassate = Math.abs(oraentrata - orauscita);
        minutipassati = Math.abs(minutientrata - minutiuscita);
        return "ore passate:" + "\t" + orepassate + "\t" + "minuti passati:" + minutipassati;
    }

    public String daiResto() {
        double r;
        String resto = "";
        if (getCredito() >= getPrezzo()) {
            r = getCredito() - getPrezzo();
            resto = "il resto è:" + "\t" + df.format(r) + "\t" + "€";
        } else {
            r = getPrezzo() - getCredito();
            resto = "le deve ancora:" + "\t" + df.format(r) + "\t" + "€";
        }
        return resto;
    }

    public String Ticket() {
        String s = "";
        s = "";
        for (int i = 0; i < nauto; i++) {
            s += "ticket n°" + "\t" + i + "\n" + auto[i].stampaTarga() + "\n" + auto[i].stampaOrarioEntrata(oraentrata, minutientrata) + "\n";

        }

        return s;
    }

    public String numeroScontrino() {
        String s = "";
        s = "";
        for (int i = 0; i < nauto; i++) {
            s += "scontrino n°" + "\t" + i + "\n";
            break;
        }

        return s;
    }

    public String StampaOrarioUscita() {
        String s = "";
        s = "";
        for (int i = 0; i < nauto; i++) {
            s += auto[i].stampaOrarioUscita(orauscita, minutiuscita);
        }
        return s;
    }

    public String comunicadatiScontrino() {
        return StampaOrarioUscita() + "\n" + tempoPassato() + "\n" + comunicaPrezzo() + "\n" + importoPagato() + "\n" + daiResto() + "\n";
    }

    @Override
    public void run() {
        display.setText(getAperto());
    }

}

classe orologio e main

package parcheggio;

import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.JLabel;

public class Orologio implements Runnable {

    JLabel orologio;
    GregorianCalendar gc;

    public Orologio(JLabel orologio) {
        this.orologio = orologio;
    }
  @Override
    public void run() {
        while (true) {
            gc = new GregorianCalendar();
            int ore = gc.get(Calendar.HOUR_OF_DAY);
            int min = gc.get(Calendar.MINUTE);
            orologio.setText(ore + ":" + min);
        }
    }
  

}

package parcheggio;

import java.awt.Frame;

public class Main {

    static Frame f = new Frame();
    static  Interfaccia i = new Interfaccia(f, true);

    public static void main(String[] args) {
      i.setVisible(true);
    }

}

classe interfaccia

package parcheggio;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

public class Interfaccia extends javax.swing.JDialog {

    Integer oraentrata, minutientrata, orauscita, minutiuscita, postiliberi, postioccupati;
    String targa;
    Parcheggio p;

    public Interfaccia(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        initComponents();
        this.setLocationRelativeTo(null);
        Thread t = new Thread(new Orologio(orologio));
        t.start();
        Thread t2 = new Thread(new Parcheggio(display));
        t2.start();
        p = new Parcheggio();
        postiliberi = p.massimoauto;
        postioccupati = 0;

    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                         
    private void initComponents() {

        lbloraentrata = new javax.swing.JLabel();
        lblminutientrata = new javax.swing.JLabel();
        txtoraentrata = new javax.swing.JTextField();
        txtminutientrata = new javax.swing.JTextField();
        entraAuto = new javax.swing.JButton();
        lbltarga = new javax.swing.JLabel();
        txttarga = new javax.swing.JTextField();
        orologio = new javax.swing.JLabel();
        esceAuto = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        txtscontrino = new javax.swing.JTextArea();
        acetta10cent = new javax.swing.JButton();
        acetta20cent = new javax.swing.JButton();
        acetta50cent = new javax.swing.JButton();
        acetta1euro = new javax.swing.JButton();
        acetta2euro = new javax.swing.JButton();
        acetta5euro = new javax.swing.JButton();
        acetta10euro = new javax.swing.JButton();
        acetta20euro = new javax.swing.JButton();
        txtcredito = new javax.swing.JTextField();
        lblpostiauto = new javax.swing.JLabel();
        selezionaAuto = new javax.swing.JComboBox();
        lblorauscita = new javax.swing.JLabel();
        lblminutiuscita = new javax.swing.JLabel();
        txtorauscita = new javax.swing.JTextField();
        txtminutiuscita = new javax.swing.JTextField();
        jScrollPane3 = new javax.swing.JScrollPane();
        display = new javax.swing.JTextArea();
        jScrollPane2 = new javax.swing.JScrollPane();
        txtticket = new javax.swing.JTextArea();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Parcheggio");
        setBackground(java.awt.Color.white);

        lbloraentrata.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        lbloraentrata.setText("ora entrata:");

        lblminutientrata.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        lblminutientrata.setText("minuti entrata:");

        txtoraentrata.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        txtoraentrata.setToolTipText("");
        txtoraentrata.setName(""); // NOI18N

        txtminutientrata.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N

        entraAuto.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        entraAuto.setForeground(java.awt.Color.blue);
        entraAuto.setText("entraAuto");
        entraAuto.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                entraAutoActionPerformed(evt);
            }
        });

        lbltarga.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        lbltarga.setText("targa:");

        txttarga.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N

        orologio.setBackground(java.awt.Color.white);
        orologio.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        orologio.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        orologio.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED, java.awt.Color.red, java.awt.Color.red, java.awt.Color.red, java.awt.Color.red));
        orologio.setOpaque(true);

        esceAuto.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        esceAuto.setForeground(java.awt.Color.blue);
        esceAuto.setText("esceAuto");
        esceAuto.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                esceAutoActionPerformed(evt);
            }
        });

        txtscontrino.setEditable(false);
        txtscontrino.setColumns(20);
        txtscontrino.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        txtscontrino.setRows(5);
        jScrollPane1.setViewportView(txtscontrino);

        acetta10cent.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        acetta10cent.setForeground(java.awt.Color.blue);
        acetta10cent.setText("0.1 €");
        acetta10cent.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                acetta10centActionPerformed(evt);
            }
        });

        acetta20cent.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        acetta20cent.setForeground(java.awt.Color.blue);
        acetta20cent.setText("0.2 €");
        acetta20cent.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                acetta20centActionPerformed(evt);
            }
        });

        acetta50cent.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        acetta50cent.setForeground(java.awt.Color.blue);
        acetta50cent.setText("0.5 €");
        acetta50cent.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                acetta50centActionPerformed(evt);
            }
        });

        acetta1euro.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        acetta1euro.setForeground(java.awt.Color.blue);
        acetta1euro.setText("1 €");
        acetta1euro.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                acetta1euroActionPerformed(evt);
            }
        });

        acetta2euro.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        acetta2euro.setForeground(java.awt.Color.blue);
        acetta2euro.setText("2 €");
        acetta2euro.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                acetta2euroActionPerformed(evt);
            }
        });

        acetta5euro.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        acetta5euro.setForeground(java.awt.Color.blue);
        acetta5euro.setText("5 €");
        acetta5euro.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                acetta5euroActionPerformed(evt);
            }
        });

        acetta10euro.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        acetta10euro.setForeground(java.awt.Color.blue);
        acetta10euro.setText("10 €");
        acetta10euro.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                acetta10euroActionPerformed(evt);
            }
        });

        acetta20euro.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        acetta20euro.setForeground(java.awt.Color.blue);
        acetta20euro.setText("20 €");
        acetta20euro.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                acetta20euroActionPerformed(evt);
            }
        });

        txtcredito.setEditable(false);
        txtcredito.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        txtcredito.setForeground(java.awt.Color.red);

        lblpostiauto.setBackground(java.awt.Color.black);
        lblpostiauto.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        lblpostiauto.setForeground(java.awt.Color.white);
        lblpostiauto.setEnabled(false);

        selezionaAuto.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        selezionaAuto.setForeground(java.awt.Color.blue);
        selezionaAuto.setToolTipText("");

        lblorauscita.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        lblorauscita.setText("ora uscita:");

        lblminutiuscita.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        lblminutiuscita.setText("minuti uscita:");

        display.setEditable(false);
        display.setColumns(20);
        display.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        display.setRows(5);
        display.setEnabled(false);
        jScrollPane3.setViewportView(display);

        txtticket.setEditable(false);
        txtticket.setColumns(20);
        txtticket.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        txtticket.setRows(5);
        txtticket.setEnabled(false);
        jScrollPane2.setViewportView(txtticket);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                        .addComponent(lblminutientrata, javax.swing.GroupLayout.PREFERRED_SIZE, 104, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(txtminutientrata, javax.swing.GroupLayout.PREFERRED_SIZE, 90, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 404, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(0, 0, Short.MAX_VALUE))
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                        .addComponent(lbloraentrata, javax.swing.GroupLayout.PREFERRED_SIZE, 106, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(txtoraentrata, javax.swing.GroupLayout.PREFERRED_SIZE, 94, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(lbltarga)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(txttarga))
                    .addComponent(entraAuto, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jScrollPane2, javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(lblminutiuscita)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(txtminutiuscita))
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(lblorauscita)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(txtorauscita, javax.swing.GroupLayout.PREFERRED_SIZE, 135, javax.swing.GroupLayout.PREFERRED_SIZE)))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(selezionaAuto, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                        .addGap(4, 4, 4)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(lblpostiauto, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addGroup(layout.createSequentialGroup()
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                    .addGroup(layout.createSequentialGroup()
                                        .addComponent(acetta10cent)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addComponent(acetta20cent)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(acetta50cent))
                                    .addGroup(layout.createSequentialGroup()
                                        .addComponent(acetta2euro, javax.swing.GroupLayout.PREFERRED_SIZE, 61, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addGap(18, 18, 18)
                                        .addComponent(acetta5euro, javax.swing.GroupLayout.PREFERRED_SIZE, 61, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addComponent(acetta10euro)))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                    .addComponent(acetta20euro, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                    .addComponent(acetta1euro, javax.swing.GroupLayout.PREFERRED_SIZE, 61, javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(txtcredito, javax.swing.GroupLayout.PREFERRED_SIZE, 116, javax.swing.GroupLayout.PREFERRED_SIZE))))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(0, 0, Short.MAX_VALUE)
                        .addComponent(esceAuto, javax.swing.GroupLayout.PREFERRED_SIZE, 404, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(orologio, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jScrollPane3, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE))
                .addGap(406, 406, 406))
        );

        layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {lblminutiuscita, lblorauscita, txtminutiuscita, txtorauscita});

        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(orologio, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lbloraentrata)
                    .addComponent(txtoraentrata)
                    .addComponent(lbltarga)
                    .addComponent(txttarga, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(37, 37, 37)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lblminutientrata, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(txtminutientrata))
                .addGap(18, 18, 18)
                .addComponent(entraAuto)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(acetta10cent)
                            .addComponent(acetta20cent)
                            .addComponent(acetta50cent)
                            .addComponent(acetta1euro))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(acetta2euro)
                            .addComponent(acetta5euro)
                            .addComponent(acetta10euro)
                            .addComponent(acetta20euro)))
                    .addComponent(txtcredito))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(lblpostiauto, javax.swing.GroupLayout.PREFERRED_SIZE, 17, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(esceAuto)
                .addGap(7, 7, 7)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lblorauscita)
                    .addComponent(txtorauscita, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(selezionaAuto, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lblminutiuscita)
                    .addComponent(txtminutiuscita, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 106, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(298, 298, 298))
        );

        layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {lblminutiuscita, lblorauscita, txtminutiuscita, txtorauscita});

        pack();
    }// </editor-fold>                       

    private void entraAutoActionPerformed(java.awt.event.ActionEvent evt) {                                         
        inizializzaEntrata();
        if (p.getAperto().equals("siamo aperti")) {
            p.entraAuto(targa, oraentrata, minutientrata);
            selezionaAuto.addItem(targa);
            try {
                FileWriter w = new FileWriter("ticket.txt");
                BufferedWriter b = new BufferedWriter(w);
                b.write(p.Ticket() + "\n");
                b.flush();
                b.close();

            } catch (IOException ex) {
                Logger.getLogger(Interfaccia.class.getName()).log(Level.SEVERE, null, ex);
            }
            txtticket.setText(p.Ticket());
            postiliberi--;
            postioccupati++;
            if (postioccupati == p.massimoauto) {
                lblpostiauto.setText("posti esauriti");
            } else {
                lblpostiauto.setText("posti liberi:" + postiliberi + "\t" + "postioccupati" + postioccupati);
            }
            txtoraentrata.setText("");
            txtminutientrata.setText("");
            txttarga.setText("");
            txtoraentrata.grabFocus();
            txtminutientrata.grabFocus();
            txttarga.grabFocus();
        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtoraentrata.setText("");
            txtminutientrata.setText("");
            txttarga.setText("");
            txtoraentrata.grabFocus();
            txtminutientrata.grabFocus();
            txttarga.grabFocus();
            lblpostiauto.setText("");
        }


    }                                         

    private void esceAutoActionPerformed(java.awt.event.ActionEvent evt) {                                         
        inizializzaUscita();
        if (p.getAperto().equals("siamo aperti")) {
            String seleziona = selezionaAuto.getSelectedItem().toString();
            String Scontrino = p.numeroScontrino() + "l'auto:" + "\t" + seleziona + p.comunicadatiScontrino();
           try {
                FileWriter w = new FileWriter("scontrino.txt");
                BufferedWriter b = new BufferedWriter(w);
                b.write(Scontrino + "\n");
                b.flush();
                b.close();

            } catch (IOException ex) {
                Logger.getLogger(Interfaccia.class.getName()).log(Level.SEVERE, null, ex);
            }

            postiliberi++;
            postioccupati--;
            txtscontrino.setText(Scontrino);
            lblpostiauto.setText("posti liberi:" + postiliberi + "\t" + "postioccupati" + postioccupati);
            selezionaAuto.removeItem(targa);
            txtorauscita.setText("");
            txtminutiuscita.setText("");
            txttarga.setText("");
            txtorauscita.grabFocus();
            txtminutiuscita.grabFocus();
            txttarga.grabFocus();
        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtorauscita.setText("");
            txtminutiuscita.setText("");
            txttarga.setText("");
            txtorauscita.grabFocus();
            txtminutiuscita.grabFocus();
            txttarga.grabFocus();
            lblpostiauto.setText("");
        }

    }                                       

    private void acetta10centActionPerformed(java.awt.event.ActionEvent evt) {                                             
        if (p.getAperto().equals("siamo aperti")) {
            txtcredito.setText(p.acetta10cent("0.1"));
        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtcredito.setText("");
        }


    }                                           

    private void acetta20centActionPerformed(java.awt.event.ActionEvent evt) {                                             
        if (p.getAperto().equals("siamo aperti")) {
            txtcredito.setText(p.acetta20cent("0.2"));
        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtcredito.setText("");
        }

    }                                           

    private void acetta50centActionPerformed(java.awt.event.ActionEvent evt) {                                             

        if (p.getAperto().equals("siamo aperti")) {
            txtcredito.setText(p.acetta50cent("0.5"));
        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtcredito.setText("");
        }

    }                                           

    private void acetta1euroActionPerformed(java.awt.event.ActionEvent evt) {                                           
        if (p.getAperto().equals("siamo aperti")) {
            txtcredito.setText(p.acettaUno("1.0"));
        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtcredito.setText("");
        }
    }                                           

    private void acetta2euroActionPerformed(java.awt.event.ActionEvent evt) {                                           
        if (p.getAperto().equals("siamo aperti")) {
            txtcredito.setText(p.acettaDue("2.0"));
        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtcredito.setText("");
        }
    }                                           

    private void acetta5euroActionPerformed(java.awt.event.ActionEvent evt) {                                           
        if (p.getAperto().equals("siamo aperti")) {
            txtcredito.setText(p.acettaCinque("5.0"));
        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtcredito.setText("");
        }
    }                                           

    private void acetta10euroActionPerformed(java.awt.event.ActionEvent evt) {                                             
        if (p.getAperto().equals("siamo aperti")) {
            txtcredito.setText(p.acettaDieci("10.0"));
        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtcredito.setText("");
        }
    }                                           

    private void acetta20euroActionPerformed(java.awt.event.ActionEvent evt) {                                             
        if (p.getAperto().equals("siamo aperti")) {
            txtcredito.setText(p.acettaVenti("20.0"));
        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtcredito.setText("");
        }

    }                                           


    // Variables declaration - do not modify                     
    private javax.swing.JButton acetta10cent;
    private javax.swing.JButton acetta10euro;
    private javax.swing.JButton acetta1euro;
    private javax.swing.JButton acetta20cent;
    private javax.swing.JButton acetta20euro;
    private javax.swing.JButton acetta2euro;
    private javax.swing.JButton acetta50cent;
    private javax.swing.JButton acetta5euro;
    private javax.swing.JTextArea display;
    private javax.swing.JButton entraAuto;
    private javax.swing.JButton esceAuto;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JLabel lblminutientrata;
    private javax.swing.JLabel lblminutiuscita;
    private javax.swing.JLabel lbloraentrata;
    private javax.swing.JLabel lblorauscita;
    private javax.swing.JLabel lblpostiauto;
    private javax.swing.JLabel lbltarga;
    private javax.swing.JLabel orologio;
    private javax.swing.JComboBox selezionaAuto;
    private javax.swing.JTextField txtcredito;
    private javax.swing.JTextField txtminutientrata;
    private javax.swing.JTextField txtminutiuscita;
    private javax.swing.JTextField txtoraentrata;
    private javax.swing.JTextField txtorauscita;
    private javax.swing.JTextArea txtscontrino;
    private javax.swing.JTextField txttarga;
    private javax.swing.JTextArea txtticket;
    // End of variables declaration                   

    public void inizializzaEntrata() {
        if (txtminutientrata.getText().isEmpty() && txtoraentrata.getText().isEmpty() && txttarga.getText().isEmpty()) {
            JOptionPane.showMessageDialog(null, "inserisci il valore richiesto!", " Errore", JOptionPane.ERROR_MESSAGE);
            txtoraentrata.setText("");
            txtminutientrata.setText("");
            txttarga.setText("");
            txtoraentrata.grabFocus();
            txtminutientrata.grabFocus();
            txttarga.grabFocus();
        } else {
            try {
                oraentrata = new Integer(txtoraentrata.getText());
                minutientrata = new Integer(txtminutientrata.getText());
            } catch (Exception e) {
                JOptionPane.showMessageDialog(null, "inserisci solo valori numerici", " Errore", JOptionPane.ERROR_MESSAGE);
                txtoraentrata.setText("");
                txtminutientrata.setText("");
                txtoraentrata.grabFocus();
                txtminutientrata.grabFocus();
            }
            try {
                oraentrata = new Integer(txtoraentrata.getText());
                minutientrata = new Integer(txtminutientrata.getText());

            } catch (NumberFormatException e) {
                JOptionPane.showMessageDialog(null, "inserisci solo valori numerici interi!", " Errore", JOptionPane.ERROR_MESSAGE);
                txtoraentrata.setText("");
                txtoraentrata.grabFocus();
                txtminutientrata.setText("");
                txtminutientrata.grabFocus();

                if (oraentrata < 0) {
                    JOptionPane.showMessageDialog(null, "inserisci solo valori numerici positivi!", " Errore", JOptionPane.ERROR_MESSAGE);
                    txtoraentrata.setText("");
                    txtoraentrata.grabFocus();
                }

                if (minutientrata < 0) {
                    JOptionPane.showMessageDialog(null, "inserisci solo valori numerici positivi!", " Errore", JOptionPane.ERROR_MESSAGE);
                    txtminutientrata.setText("");
                    txtminutientrata.grabFocus();
                }

                if (oraentrata > 24) {
                    JOptionPane.showMessageDialog(null, "inserisci solo minori di 24", " Errore", JOptionPane.ERROR_MESSAGE);
                    txtoraentrata.setText("");
                    txtoraentrata.grabFocus();
                }

                if (minutientrata >= 60) {
                    JOptionPane.showMessageDialog(null, "inserisci solo minori di 60!", " Errore", JOptionPane.ERROR_MESSAGE);
                    txtminutientrata.setText("");
                    txtminutientrata.grabFocus();
                }

            }
            targa = txttarga.getText();
            p.minutientrata = minutientrata;
            p.oraentrata = oraentrata;

        }

    }

    public void inizializzaUscita() {
        if (txtminutiuscita.getText().isEmpty() && txtorauscita.getText().isEmpty()) {
            JOptionPane.showMessageDialog(null, "inserisci il valore richiesto!", " Errore", JOptionPane.ERROR_MESSAGE);
            txtorauscita.setText("");
            txtminutiuscita.setText("");
            txtorauscita.grabFocus();
            txtminutiuscita.grabFocus();

        } else {
            try {
                orauscita = new Integer(txtorauscita.getText());
                minutiuscita = new Integer(txtminutiuscita.getText());

            } catch (Exception e) {
                JOptionPane.showMessageDialog(null, "inserisci solo valori numerici", " Errore", JOptionPane.ERROR_MESSAGE);
                txtorauscita.setText("");
                txtminutiuscita.setText("");
                txtorauscita.grabFocus();
                txtminutiuscita.grabFocus();
            }
            try {
                orauscita = new Integer(txtorauscita.getText());
                minutiuscita = new Integer(txtminutiuscita.getText());

            } catch (NumberFormatException e) {
                JOptionPane.showMessageDialog(null, "inserisci solo valori numerici interi!", " Errore", JOptionPane.ERROR_MESSAGE);
                txtorauscita.setText("");
                txtminutiuscita.setText("");
                txtorauscita.grabFocus();
                txtminutiuscita.grabFocus();

                if (orauscita < 0) {
                    JOptionPane.showMessageDialog(null, "inserisci solo valori numerici positivi!", " Errore", JOptionPane.ERROR_MESSAGE);
                    txtorauscita.setText("");
                    txtorauscita.grabFocus();
                }

                if (minutiuscita < 0) {
                    JOptionPane.showMessageDialog(null, "inserisci solo valori numerici positivi!", " Errore", JOptionPane.ERROR_MESSAGE);
                    txtminutiuscita.setText("");
                    txtminutiuscita.grabFocus();
                }

                if (orauscita > 24) {
                    JOptionPane.showMessageDialog(null, "inserisci solo minori di 24", " Errore", JOptionPane.ERROR_MESSAGE);
                    txtorauscita.setText("");
                    txtorauscita.grabFocus();
                }

                if (minutiuscita >= 60) {
                    JOptionPane.showMessageDialog(null, "inserisci solo minori di 60!", " Errore", JOptionPane.ERROR_MESSAGE);
                    txtminutiuscita.setText("");
                    txtminutiuscita.grabFocus();
                }

            }
            p.minutiuscita = minutiuscita;
            p.orauscita = orauscita;
        }

    }

}

vorrrei dei consigli o una correzione e se adesso è più bello il codice e capire come mai mi da tale errore la parte iniziale di scontrino.
Verifica usando ad esempio il Logger quante volte entra nella funzione che aggiunge le auto (quella che poi aggiunge elementi alla JComboBox). Sospetto sia dovuto ad altro però.
per verificare ho usato il debug dell'ide.
 
Ciao scusami, sono stato impegnato e non riuscivo guardare.

Posando gli occhi penso di aver trovato sicuramente un problema:

Java:
    public String numeroScontrino() {
        String s = "";
        s = "";
        for (int i = 0; i < nauto; i++) {
            s += "scontrino n°" + "\t" + i + "\n";
            break;
        }

        return s;
    }

Hai lasciato un break nel ciclo, quindi si ferma al primo elemento, indice 0.

Dovresti scriverlo così (semplificando anche):
Java:
    public String numeroScontrino() {
        String s = "";
        for (int i = 0; i < nauto; i++) {
            s += "scontrino n°\t" + i + "\n";
        }
        return s;
    }

Riepilogando: quali problemi riscontri ancora? Mi sono perso un pochino :p
 
Riepilogando: quali problemi riscontri ancora? Mi sono perso un pochino :p
qua sotto ci sono le immagini per farti capire cosa manca.

problema ticket 1.jpg
problema ticket 1.jpgproblema ticket 1.jpg
problema ticket 2.jpg
problema scontrino.jpg

codice aggiornato:

Java:
package parcheggio;

import java.text.DecimalFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.JComboBox;
import javax.swing.JTextArea;

public class Parcheggio implements Runnable {

    int nauto;
    static final int MAXAUTO = 200;
    Auto[] auto;
    double credito;
    GregorianCalendar gc;
    DecimalFormat df = new DecimalFormat("#,##0.00");
    int orauscita, minutiuscita, oraentrata, minutientrata;
    JTextArea display;
    JComboBox selezionaAuto;
    int massimoauto;

    public Parcheggio() {
        this.auto = new Auto[MAXAUTO];
        this.nauto = 0;
        this.selezionaAuto = new JComboBox();
        this.massimoauto = MAXAUTO;

    }

    public Parcheggio(JTextArea display) {
        this.display = display;
    }

    public int getAuto() {
        return nauto;
    }

    public Auto getAuto(int i) {
        return auto[i];
    }

    public String getAperto() {
        while (true) {
            gc = new GregorianCalendar();
            int ore = gc.get(Calendar.HOUR_OF_DAY);
            int oraapertura = 8;
            int orachiusura = 24;
            if (ore >= oraapertura && ore <= orachiusura) {
                return "siamo aperti";
            } else {
                return "siamo chiusi" + "\n" + "l'orario apertura è  dalle:" + "\t" + oraapertura + "alle:" + "\t" + orachiusura;
            }
        }
    }

    public String acetta10cent(String par) {
        if (par.equalsIgnoreCase("0.1")) {
            credito += 0.1;
        }
        return df.format(credito) + "\t" + "€";

    }

    public String acetta20cent(String par) {
        if (par.equalsIgnoreCase("0.2")) {
            credito += 0.2;
        }
        return df.format(credito) + "\t" + "€";
    }

    public String acetta50cent(String par) {
        if (par.equalsIgnoreCase("0.5")) {
            credito += 0.5;
        }
        return df.format(credito) + "\t" + "€";
    }

    public String acettaUno(String par) {
        if (par.equalsIgnoreCase("1.0")) {
            credito += 1.0;
        }
        return df.format(credito) + "\t" + "€";
    }

    public String acettaDue(String par) {
        if (par.equalsIgnoreCase("2.0")) {
            credito += 2.0;
        }
        return df.format(credito) + "\t" + "€";
    }

    public String acettaCinque(String par) {
        if (par.equalsIgnoreCase("5.0")) {
            credito += 5.0;
        }
        return df.format(credito) + "€";
    }

    public String acettaDieci(String par) {
        if (par.equalsIgnoreCase("10.0")) {
            credito += 10.0;
        }
        return df.format(credito) + "\t" + "€";
    }

    public String acettaVenti(String par) {
        if (par.equalsIgnoreCase("20.0")) {
            credito += 20.0;
        }
        return df.format(credito) + "\t" + "€";
    }

    public double getCredito() {
        return credito;
    }

    public String importoPagato() {
        return "l'importo pagato:" + "\t" + df.format(getCredito()) + "\t" + "€";
    }

    public void entraAuto(String targa, int oraentrata, int minutientrata) {
        if (nauto < MAXAUTO) {
            auto[nauto++] = new Auto(targa, oraentrata, minutientrata);

        } else {
            System.err.println("posti esauriti!");
        }
    }

    public double getPrezzo() {
        int orepassate = Math.abs(oraentrata - orauscita);
        double prezzo = 0;
        int diffMin = Math.abs(minutientrata - minutiuscita);
        if (orepassate <= 1) {
            prezzo = 1.80;
        } else if ((orepassate == 1 && diffMin >= 30) || orepassate == 2) {
            prezzo = 3.60;
        } else if ((orepassate == 2 && diffMin >= 30) || orepassate == 3) {
            prezzo = 5.40;
        } else if ((orepassate == 3 && diffMin >= 30) || orepassate == 4) {
            prezzo = 7.20;
        } else if ((orepassate == 4 && diffMin >= 30) || orepassate <= 8) {
            prezzo = 7.50;
        } else if (orepassate <= 10) {
            prezzo = 7.50 + 1.80;
        } else {
            prezzo = 12.50;
        }
        return prezzo;
    }

    public String comunicaPrezzo() {
        return "lei deve pagare:" + "\t" + df.format(getPrezzo()) + "\t" + "€";
    }

    public String tempoPassato() {
        int orepassate, minutipassati;
        orepassate = Math.abs(oraentrata - orauscita);
        minutipassati = Math.abs(minutientrata - minutiuscita);
        return "ore passate:" + "\t" + orepassate + "\t" + "minuti passati:" + minutipassati;
    }

    public String daiResto() {
        double r;
        String resto = "";
        if (getCredito() >= getPrezzo()) {
            r = getCredito() - getPrezzo();
            resto = "il resto è:" + "\t" + df.format(r) + "\t" + "€";
        } else {
            r = getPrezzo() - getCredito();
            resto = "le deve ancora:" + "\t" + df.format(r) + "\t" + "€";
        }
        return resto;
    }

    public String Ticket() {
        String s = "";
       for (int i = 0; i < nauto; i++) {
            s += "ticket n°" + "\t" + i + "\n" + auto[i].stampaTarga() + "\n" + auto[i].stampaOrarioEntrata(oraentrata, minutientrata) + "\n";

        }

        return s;
    }

    public String numeroScontrino() {
        String s = "";
       for (int i = 0; i < nauto; i++) {
            s+= "scontrino n°" + "\t" + i + "\n" + auto[i].stampaOrarioUscita(orauscita, minutiuscita);
        }
        return s;
    }

    public String comunicadatiScontrino() {
        return "\n" + tempoPassato() + "\n" + comunicaPrezzo() + "\n" + importoPagato() + "\n" + daiResto() + "\n";
    }

    @Override
    public void run() {
        display.setText(getAperto());
    }

}


package parcheggio;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

public class Interfaccia extends javax.swing.JDialog {

    Integer oraentrata, minutientrata, orauscita, minutiuscita, postiliberi, postioccupati;
    String targa;
    Parcheggio p;

    public Interfaccia(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        initComponents();
        this.setLocationRelativeTo(null);
        Thread t = new Thread(new Orologio(orologio));
        t.start();
        Thread t2 = new Thread(new Parcheggio(display));
        t2.start();
        p = new Parcheggio();
        postiliberi = p.massimoauto;
        postioccupati = 0;

    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                         
    private void initComponents() {

        lbloraentrata = new javax.swing.JLabel();
        lblminutientrata = new javax.swing.JLabel();
        txtoraentrata = new javax.swing.JTextField();
        txtminutientrata = new javax.swing.JTextField();
        entraAuto = new javax.swing.JButton();
        lbltarga = new javax.swing.JLabel();
        txttarga = new javax.swing.JTextField();
        orologio = new javax.swing.JLabel();
        esceAuto = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        txtscontrino = new javax.swing.JTextArea();
        acetta10cent = new javax.swing.JButton();
        acetta20cent = new javax.swing.JButton();
        acetta50cent = new javax.swing.JButton();
        acetta1euro = new javax.swing.JButton();
        acetta2euro = new javax.swing.JButton();
        acetta5euro = new javax.swing.JButton();
        acetta10euro = new javax.swing.JButton();
        acetta20euro = new javax.swing.JButton();
        txtcredito = new javax.swing.JTextField();
        lblpostiauto = new javax.swing.JLabel();
        selezionaAuto = new javax.swing.JComboBox();
        lblorauscita = new javax.swing.JLabel();
        lblminutiuscita = new javax.swing.JLabel();
        txtorauscita = new javax.swing.JTextField();
        txtminutiuscita = new javax.swing.JTextField();
        jScrollPane3 = new javax.swing.JScrollPane();
        display = new javax.swing.JTextArea();
        jScrollPane2 = new javax.swing.JScrollPane();
        txtticket = new javax.swing.JTextArea();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Parcheggio");
        setBackground(java.awt.Color.white);

        lbloraentrata.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        lbloraentrata.setText("ora entrata:");

        lblminutientrata.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        lblminutientrata.setText("minuti entrata:");

        txtoraentrata.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        txtoraentrata.setToolTipText("");
        txtoraentrata.setName(""); // NOI18N

        txtminutientrata.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N

        entraAuto.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        entraAuto.setForeground(java.awt.Color.blue);
        entraAuto.setText("entraAuto");
        entraAuto.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                entraAutoActionPerformed(evt);
            }
        });

        lbltarga.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        lbltarga.setText("targa:");

        txttarga.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N

        orologio.setBackground(java.awt.Color.white);
        orologio.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        orologio.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        orologio.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED, java.awt.Color.red, java.awt.Color.red, java.awt.Color.red, java.awt.Color.red));
        orologio.setEnabled(false);
        orologio.setOpaque(true);

        esceAuto.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        esceAuto.setForeground(java.awt.Color.blue);
        esceAuto.setText("esceAuto");
        esceAuto.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                esceAutoActionPerformed(evt);
            }
        });

        txtscontrino.setEditable(false);
        txtscontrino.setColumns(20);
        txtscontrino.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        txtscontrino.setRows(5);
        txtscontrino.setDisabledTextColor(java.awt.Color.black);
        txtscontrino.setEnabled(false);
        jScrollPane1.setViewportView(txtscontrino);

        acetta10cent.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        acetta10cent.setForeground(java.awt.Color.blue);
        acetta10cent.setText("0.1 €");
        acetta10cent.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                acetta10centActionPerformed(evt);
            }
        });

        acetta20cent.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        acetta20cent.setForeground(java.awt.Color.blue);
        acetta20cent.setText("0.2 €");
        acetta20cent.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                acetta20centActionPerformed(evt);
            }
        });

        acetta50cent.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        acetta50cent.setForeground(java.awt.Color.blue);
        acetta50cent.setText("0.5 €");
        acetta50cent.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                acetta50centActionPerformed(evt);
            }
        });

        acetta1euro.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        acetta1euro.setForeground(java.awt.Color.blue);
        acetta1euro.setText("1 €");
        acetta1euro.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                acetta1euroActionPerformed(evt);
            }
        });

        acetta2euro.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        acetta2euro.setForeground(java.awt.Color.blue);
        acetta2euro.setText("2 €");
        acetta2euro.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                acetta2euroActionPerformed(evt);
            }
        });

        acetta5euro.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        acetta5euro.setForeground(java.awt.Color.blue);
        acetta5euro.setText("5 €");
        acetta5euro.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                acetta5euroActionPerformed(evt);
            }
        });

        acetta10euro.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        acetta10euro.setForeground(java.awt.Color.blue);
        acetta10euro.setText("10 €");
        acetta10euro.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                acetta10euroActionPerformed(evt);
            }
        });

        acetta20euro.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        acetta20euro.setForeground(java.awt.Color.blue);
        acetta20euro.setText("20 €");
        acetta20euro.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                acetta20euroActionPerformed(evt);
            }
        });

        txtcredito.setEditable(false);
        txtcredito.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N
        txtcredito.setForeground(java.awt.Color.red);

        lblpostiauto.setBackground(java.awt.Color.black);
        lblpostiauto.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        lblpostiauto.setForeground(java.awt.Color.white);
        lblpostiauto.setEnabled(false);

        selezionaAuto.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        selezionaAuto.setForeground(java.awt.Color.blue);
        selezionaAuto.setToolTipText("");

        lblorauscita.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        lblorauscita.setText("ora uscita:");

        lblminutiuscita.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        lblminutiuscita.setText("minuti uscita:");

        display.setEditable(false);
        display.setColumns(20);
        display.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N
        display.setRows(5);
        display.setDisabledTextColor(java.awt.Color.black);
        display.setEnabled(false);
        jScrollPane3.setViewportView(display);

        txtticket.setEditable(false);
        txtticket.setColumns(20);
        txtticket.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N
        txtticket.setRows(5);
        txtticket.setDisabledTextColor(java.awt.Color.black);
        txtticket.setEnabled(false);
        jScrollPane2.setViewportView(txtticket);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                        .addComponent(lblminutientrata, javax.swing.GroupLayout.PREFERRED_SIZE, 104, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(txtminutientrata, javax.swing.GroupLayout.PREFERRED_SIZE, 90, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(jScrollPane1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 404, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(0, 0, Short.MAX_VALUE))
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                        .addComponent(lbloraentrata, javax.swing.GroupLayout.PREFERRED_SIZE, 106, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(txtoraentrata, javax.swing.GroupLayout.PREFERRED_SIZE, 94, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(18, 18, 18)
                        .addComponent(lbltarga)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(txttarga))
                    .addComponent(entraAuto, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jScrollPane2, javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(lblminutiuscita)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(txtminutiuscita))
                            .addGroup(layout.createSequentialGroup()
                                .addComponent(lblorauscita)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(txtorauscita, javax.swing.GroupLayout.PREFERRED_SIZE, 135, javax.swing.GroupLayout.PREFERRED_SIZE)))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(selezionaAuto, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                        .addGap(4, 4, 4)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(lblpostiauto, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addGroup(layout.createSequentialGroup()
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                                    .addGroup(layout.createSequentialGroup()
                                        .addComponent(acetta10cent)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addComponent(acetta20cent)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                        .addComponent(acetta50cent))
                                    .addGroup(layout.createSequentialGroup()
                                        .addComponent(acetta2euro, javax.swing.GroupLayout.PREFERRED_SIZE, 61, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addGap(18, 18, 18)
                                        .addComponent(acetta5euro, javax.swing.GroupLayout.PREFERRED_SIZE, 61, javax.swing.GroupLayout.PREFERRED_SIZE)
                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                                        .addComponent(acetta10euro)))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                                    .addComponent(acetta20euro, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                                    .addComponent(acetta1euro, javax.swing.GroupLayout.PREFERRED_SIZE, 61, javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(txtcredito, javax.swing.GroupLayout.PREFERRED_SIZE, 116, javax.swing.GroupLayout.PREFERRED_SIZE))))
                    .addGroup(layout.createSequentialGroup()
                        .addGap(0, 0, Short.MAX_VALUE)
                        .addComponent(esceAuto, javax.swing.GroupLayout.PREFERRED_SIZE, 404, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(orologio, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(jScrollPane3, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE))
                .addGap(415, 415, 415))
        );

        layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {lblminutiuscita, lblorauscita, txtminutiuscita, txtorauscita});

        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(orologio, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 65, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lbloraentrata)
                    .addComponent(txtoraentrata)
                    .addComponent(lbltarga)
                    .addComponent(txttarga, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(37, 37, 37)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lblminutientrata, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(txtminutientrata))
                .addGap(18, 18, 18)
                .addComponent(entraAuto)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(acetta10cent)
                            .addComponent(acetta20cent)
                            .addComponent(acetta50cent)
                            .addComponent(acetta1euro))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(acetta2euro)
                            .addComponent(acetta5euro)
                            .addComponent(acetta10euro)
                            .addComponent(acetta20euro)))
                    .addComponent(txtcredito))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(lblpostiauto, javax.swing.GroupLayout.PREFERRED_SIZE, 17, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(esceAuto)
                .addGap(7, 7, 7)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lblorauscita)
                    .addComponent(txtorauscita, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(selezionaAuto, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lblminutiuscita)
                    .addComponent(txtminutiuscita, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 106, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(286, 286, 286))
        );

        layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {lblminutiuscita, lblorauscita, txtminutiuscita, txtorauscita});

        pack();
    }// </editor-fold>                       

    private void entraAutoActionPerformed(java.awt.event.ActionEvent evt) {                                         
        inizializzaEntrata();
        if (p.getAperto().equals("siamo aperti")) {
            p.entraAuto(targa, oraentrata, minutientrata);
            selezionaAuto.addItem(targa);
            try {
                FileWriter w = new FileWriter("ticket.txt");
                BufferedWriter b = new BufferedWriter(w);
                b.write(p.Ticket() + "\n");
                b.flush();
                b.close();

            } catch (IOException ex) {
                Logger.getLogger(Interfaccia.class.getName()).log(Level.SEVERE, null, ex);
            }
            txtticket.setText(p.Ticket());
            postiliberi--;
            postioccupati++;
            if (postioccupati == p.massimoauto) {
                lblpostiauto.setText("posti esauriti");
            } else {
                lblpostiauto.setText("posti liberi:" + postiliberi + "\t" + "postioccupati" + postioccupati);
            }
            txtoraentrata.setText("");
            txtminutientrata.setText("");
            txttarga.setText("");
            txtoraentrata.grabFocus();
            txtminutientrata.grabFocus();
            txttarga.grabFocus();
        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtoraentrata.setText("");
            txtminutientrata.setText("");
            txttarga.setText("");
            txtoraentrata.grabFocus();
            txtminutientrata.grabFocus();
            txttarga.grabFocus();
            lblpostiauto.setText("");
        }


    }                                         

    private void esceAutoActionPerformed(java.awt.event.ActionEvent evt) {                                         
        inizializzaUscita();
        if (p.getAperto().equals("siamo aperti")) {
            String seleziona = selezionaAuto.getSelectedItem().toString();
            String Scontrino = p.numeroScontrino()+p.comunicadatiScontrino()+"targa:" + "\t" + seleziona;
           try {
                FileWriter w = new FileWriter("scontrino.txt");
                BufferedWriter b = new BufferedWriter(w);
                b.write(Scontrino + "\n");
                b.flush();
                b.close();

            } catch (IOException ex) {
                Logger.getLogger(Interfaccia.class.getName()).log(Level.SEVERE, null, ex);
            }

            postiliberi++;
            postioccupati--;
            txtscontrino.setText(Scontrino);
            lblpostiauto.setText("posti liberi:" + postiliberi + "\t" + "postioccupati" + postioccupati);
            selezionaAuto.removeItem(targa);
            txtorauscita.setText("");
            txtminutiuscita.setText("");
            txttarga.setText("");
            txtorauscita.grabFocus();
            txtminutiuscita.grabFocus();
            txttarga.grabFocus();
        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtorauscita.setText("");
            txtminutiuscita.setText("");
            txttarga.setText("");
            txtorauscita.grabFocus();
            txtminutiuscita.grabFocus();
            txttarga.grabFocus();
            lblpostiauto.setText("");
        }

    }                                       

    private void acetta10centActionPerformed(java.awt.event.ActionEvent evt) {                                             
        if (p.getAperto().equals("siamo aperti")) {
            txtcredito.setText(p.acetta10cent("0.1"));
        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtcredito.setText("");
        }


    }                                           

    private void acetta20centActionPerformed(java.awt.event.ActionEvent evt) {                                             
        if (p.getAperto().equals("siamo aperti")) {
            txtcredito.setText(p.acetta20cent("0.2"));
        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtcredito.setText("");
        }

    }                                           

    private void acetta50centActionPerformed(java.awt.event.ActionEvent evt) {                                             

        if (p.getAperto().equals("siamo aperti")) {
            txtcredito.setText(p.acetta50cent("0.5"));
        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtcredito.setText("");
        }

    }                                           

    private void acetta1euroActionPerformed(java.awt.event.ActionEvent evt) {                                           
        if (p.getAperto().equals("siamo aperti")) {
            txtcredito.setText(p.acettaUno("1.0"));
        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtcredito.setText("");
        }
    }                                           

    private void acetta2euroActionPerformed(java.awt.event.ActionEvent evt) {                                           
        if (p.getAperto().equals("siamo aperti")) {
            txtcredito.setText(p.acettaDue("2.0"));
        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtcredito.setText("");
        }
    }                                           

    private void acetta5euroActionPerformed(java.awt.event.ActionEvent evt) {                                           
        if (p.getAperto().equals("siamo aperti")) {
            txtcredito.setText(p.acettaCinque("5.0"));
        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtcredito.setText("");
        }
    }                                           

    private void acetta10euroActionPerformed(java.awt.event.ActionEvent evt) {                                             
        if (p.getAperto().equals("siamo aperti")) {
            txtcredito.setText(p.acettaDieci("10.0"));
        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtcredito.setText("");
        }
    }                                           

    private void acetta20euroActionPerformed(java.awt.event.ActionEvent evt) {                                             
        if (p.getAperto().equals("siamo aperti")) {
            txtcredito.setText(p.acettaVenti("20.0"));
        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtcredito.setText("");
        }

    }                                           


    // Variables declaration - do not modify                     
    private javax.swing.JButton acetta10cent;
    private javax.swing.JButton acetta10euro;
    private javax.swing.JButton acetta1euro;
    private javax.swing.JButton acetta20cent;
    private javax.swing.JButton acetta20euro;
    private javax.swing.JButton acetta2euro;
    private javax.swing.JButton acetta50cent;
    private javax.swing.JButton acetta5euro;
    private javax.swing.JTextArea display;
    private javax.swing.JButton entraAuto;
    private javax.swing.JButton esceAuto;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JScrollPane jScrollPane3;
    private javax.swing.JLabel lblminutientrata;
    private javax.swing.JLabel lblminutiuscita;
    private javax.swing.JLabel lbloraentrata;
    private javax.swing.JLabel lblorauscita;
    private javax.swing.JLabel lblpostiauto;
    private javax.swing.JLabel lbltarga;
    private javax.swing.JLabel orologio;
    private javax.swing.JComboBox selezionaAuto;
    private javax.swing.JTextField txtcredito;
    private javax.swing.JTextField txtminutientrata;
    private javax.swing.JTextField txtminutiuscita;
    private javax.swing.JTextField txtoraentrata;
    private javax.swing.JTextField txtorauscita;
    private javax.swing.JTextArea txtscontrino;
    private javax.swing.JTextField txttarga;
    private javax.swing.JTextArea txtticket;
    // End of variables declaration                   

    public void inizializzaEntrata() {
        if (txtminutientrata.getText().isEmpty() && txtoraentrata.getText().isEmpty() && txttarga.getText().isEmpty()) {
            JOptionPane.showMessageDialog(null, "inserisci il valore richiesto!", " Errore", JOptionPane.ERROR_MESSAGE);
            txtoraentrata.setText("");
            txtminutientrata.setText("");
            txttarga.setText("");
            txtoraentrata.grabFocus();
            txtminutientrata.grabFocus();
            txttarga.grabFocus();
        } else {
            try {
                oraentrata = new Integer(txtoraentrata.getText());
                minutientrata = new Integer(txtminutientrata.getText());
            } catch (Exception e) {
                JOptionPane.showMessageDialog(null, "inserisci solo valori numerici", " Errore", JOptionPane.ERROR_MESSAGE);
                txtoraentrata.setText("");
                txtminutientrata.setText("");
                txtoraentrata.grabFocus();
                txtminutientrata.grabFocus();
            }
            try {
                oraentrata = new Integer(txtoraentrata.getText());
                minutientrata = new Integer(txtminutientrata.getText());

            } catch (NumberFormatException e) {
                JOptionPane.showMessageDialog(null, "inserisci solo valori numerici interi!", " Errore", JOptionPane.ERROR_MESSAGE);
                txtoraentrata.setText("");
                txtoraentrata.grabFocus();
                txtminutientrata.setText("");
                txtminutientrata.grabFocus();

                if (oraentrata < 0) {
                    JOptionPane.showMessageDialog(null, "inserisci solo valori numerici positivi!", " Errore", JOptionPane.ERROR_MESSAGE);
                    txtoraentrata.setText("");
                    txtoraentrata.grabFocus();
                }

                if (minutientrata < 0) {
                    JOptionPane.showMessageDialog(null, "inserisci solo valori numerici positivi!", " Errore", JOptionPane.ERROR_MESSAGE);
                    txtminutientrata.setText("");
                    txtminutientrata.grabFocus();
                }

                if (oraentrata > 24) {
                    JOptionPane.showMessageDialog(null, "inserisci solo minori di 24", " Errore", JOptionPane.ERROR_MESSAGE);
                    txtoraentrata.setText("");
                    txtoraentrata.grabFocus();
                }

                if (minutientrata >= 60) {
                    JOptionPane.showMessageDialog(null, "inserisci solo minori di 60!", " Errore", JOptionPane.ERROR_MESSAGE);
                    txtminutientrata.setText("");
                    txtminutientrata.grabFocus();
                }

            }
            targa = txttarga.getText();
            p.minutientrata = minutientrata;
            p.oraentrata = oraentrata;

        }

    }

    public void inizializzaUscita() {
        if (txtminutiuscita.getText().isEmpty() && txtorauscita.getText().isEmpty()) {
            JOptionPane.showMessageDialog(null, "inserisci il valore richiesto!", " Errore", JOptionPane.ERROR_MESSAGE);
            txtorauscita.setText("");
            txtminutiuscita.setText("");
            txtorauscita.grabFocus();
            txtminutiuscita.grabFocus();

        } else {
            try {
                orauscita = new Integer(txtorauscita.getText());
                minutiuscita = new Integer(txtminutiuscita.getText());

            } catch (Exception e) {
                JOptionPane.showMessageDialog(null, "inserisci solo valori numerici", " Errore", JOptionPane.ERROR_MESSAGE);
                txtorauscita.setText("");
                txtminutiuscita.setText("");
                txtorauscita.grabFocus();
                txtminutiuscita.grabFocus();
            }
            try {
                orauscita = new Integer(txtorauscita.getText());
                minutiuscita = new Integer(txtminutiuscita.getText());

            } catch (NumberFormatException e) {
                JOptionPane.showMessageDialog(null, "inserisci solo valori numerici interi!", " Errore", JOptionPane.ERROR_MESSAGE);
                txtorauscita.setText("");
                txtminutiuscita.setText("");
                txtorauscita.grabFocus();
                txtminutiuscita.grabFocus();

                if (orauscita < 0) {
                    JOptionPane.showMessageDialog(null, "inserisci solo valori numerici positivi!", " Errore", JOptionPane.ERROR_MESSAGE);
                    txtorauscita.setText("");
                    txtorauscita.grabFocus();
                }

                if (minutiuscita < 0) {
                    JOptionPane.showMessageDialog(null, "inserisci solo valori numerici positivi!", " Errore", JOptionPane.ERROR_MESSAGE);
                    txtminutiuscita.setText("");
                    txtminutiuscita.grabFocus();
                }

                if (orauscita > 24) {
                    JOptionPane.showMessageDialog(null, "inserisci solo minori di 24", " Errore", JOptionPane.ERROR_MESSAGE);
                    txtorauscita.setText("");
                    txtorauscita.grabFocus();
                }

                if (minutiuscita >= 60) {
                    JOptionPane.showMessageDialog(null, "inserisci solo minori di 60!", " Errore", JOptionPane.ERROR_MESSAGE);
                    txtminutiuscita.setText("");
                    txtminutiuscita.grabFocus();
                }

            }
            p.minutiuscita = minutiuscita;
            p.orauscita = orauscita;
        }

    }

}
package parcheggio;

public class Auto {

    String targa;
    int ora,minuti;

    public Auto(String targa, int ora, int minuti) {
        this.targa = targa;
        this.minuti=minuti;
        this.ora=ora;
    }
  
    public String stampaTarga() {
        return  "targa:"+targa;
    }
    
    public String stampaOrarioEntrata(int ora,int minuti){
        return "ora entrata:"+"\t"+ora+"\t"+"minuti entrata:"+"\t"+minuti;
    }
    
    public String stampaOrarioUscita(int ora, int minuti){
        return "ora uscita:"+"\t"+ora+"\t"+"minuti uscita:"+"\t"+minuti;
    }

}
 
usando il debug mettendo come riga di riferimento questa:

Java:
s += "è entrata alle" + "\t" + auto[i].stampaOrario(oraentrata, minutientrata) + "\n";

mi esce questo:

Java:
"i" is not a known variable in the current context.

perchè? cosa significa? come si risolve?
 
@grisu92 eccomi, sempre in ritardo.

Ci sono altri errori, a occhio.
Ad esempio:

Java:
    public void entraAuto(String targa, int oraentrata, int minutientrata) {
        if (nauto < MAXAUTO) {
            auto[nauto++] = new Auto(targa, oraentrata, minutientrata);

        } else {
            System.err.println("posti esauriti!");
        }
    }

Questo va bene. Ma le variabili di istanza nella classe Parcheggio chiamate oraentrata e minutientrata vanno rimosse, non ti servono a niente.

Java:
    public String Ticket() {
        String s = "";
       for (int i = 0; i < nauto; i++) {
            s += "ticket n°" + "\t" + i + "\n" + auto[i].stampaTarga() + "\n" + auto[i].stampaOrarioEntrata(oraentrata, minutientrata) + "\n";

        }

        return s;
    }

Proprio perchè le usi qui, sbagliando.
Quando richiami "stampaorarioEntrata" sei già nel contesto di quell'oggetto auto. Lui ha già ora e minuti di entrata, non devi passare alcun parametro.

Anche getPrezzo() deve essere corretto.

E pure questo:

Java:
    public String tempoPassato() {
        int orepassate, minutipassati;
        orepassate = Math.abs(oraentrata - orauscita);
        minutipassati = Math.abs(minutientrata - minutiuscita);
        return "ore passate:" + "\t" + orepassate + "\t" + "minuti passati:" + minutipassati;
    }

stai usando sempre le variabili della classe Parcheggio, ed è appunto sbagliato.

Ci sono alcune strade qui. Visto che all'Auto passi già ore e minuti, puoi lasciare qui questi dati, visto che fanno parte dell'ingresso dell'auto... anche se non è propriamente corretto, in quanto andrebbero trattate come entità separata; però anche se non ti complichi troppo la vita può andar bene.

Quindi il metodo getPrezzo() dovrà ricevere ore e minuti come parametri, ad esempio.
 
Ultima modifica:
codice aggiornato solo le parti che ho modificato:
Java:
package parcheggio;

public class Auto {

    String targa;
    int ora,minuti;

    public Auto(String targa ) {
        this.targa = targa;
        
    }
  
    public String stampaTarga() {
        return  "targa:"+targa;
    }
    
    public String stampaOrario(int ora,int minuti){
        return "ore:"+"\t"+ora+"\t"+"minuti:"+"\t"+minuti;
    }
  
}

package parcheggio;

import java.text.DecimalFormat;
import java.util.Calendar;
import java.util.GregorianCalendar;
import javax.swing.JComboBox;
import javax.swing.JOptionPane;
import javax.swing.JTextArea;

public class Parcheggio implements Runnable {

    int nauto;
    static final int MAXAUTO = 200;
    Auto[] auto;
    double credito;
    GregorianCalendar gc;
    DecimalFormat df = new DecimalFormat("#,##0.00");
    int orauscita, minutiuscita, oraentrata, minutientrata;
    JTextArea display;
    JComboBox selezionaAuto;
    int massimoauto;

    public Parcheggio() {
        this.auto = new Auto[MAXAUTO];
        this.nauto = 0;
        this.selezionaAuto = new JComboBox();
        this.massimoauto = MAXAUTO;

    }

    public Parcheggio(JTextArea display) {
        this.display = display;
    }

    public int getAuto() {
        return nauto;
    }

    public Auto getAuto(int i) {
        return auto[i];
    }

    public String getAperto() {
        while (true) {
            gc = new GregorianCalendar();
            int ore = gc.get(Calendar.HOUR_OF_DAY);
            int oraapertura = 8;
            int orachiusura = 24;
            if (ore >= oraapertura && ore <= orachiusura) {
                return "siamo aperti";
            } else {
                return "siamo chiusi" + "\n" + "l'orario apertura è  dalle:" + "\t" + oraapertura + "alle:" + "\t" + orachiusura;
            }
        }
    }

    public String acetta10cent(String par) {
        if (par.equalsIgnoreCase("0.1")) {
            credito += 0.1;
        }
        return df.format(credito) + "\t" + "€";

    }

    public String acetta20cent(String par) {
        if (par.equalsIgnoreCase("0.2")) {
            credito += 0.2;
        }
        return df.format(credito) + "\t" + "€";
    }

    public String acetta50cent(String par) {
        if (par.equalsIgnoreCase("0.5")) {
            credito += 0.5;
        }
        return df.format(credito) + "\t" + "€";
    }

    public String acettaUno(String par) {
        if (par.equalsIgnoreCase("1.0")) {
            credito += 1.0;
        }
        return df.format(credito) + "\t" + "€";
    }

    public String acettaDue(String par) {
        if (par.equalsIgnoreCase("2.0")) {
            credito += 2.0;
        }
        return df.format(credito) + "\t" + "€";
    }

    public String acettaCinque(String par) {
        if (par.equalsIgnoreCase("5.0")) {
            credito += 5.0;
        }
        return df.format(credito) + "€";
    }

    public String acettaDieci(String par) {
        if (par.equalsIgnoreCase("10.0")) {
            credito += 10.0;
        }
        return df.format(credito) + "\t" + "€";
    }

    public String acettaVenti(String par) {
        if (par.equalsIgnoreCase("20.0")) {
            credito += 20.0;
        }
        return df.format(credito) + "\t" + "€";
    }

    public double getCredito() {
        return credito;
    }

    public void entraAuto(String targa) {
        if (nauto < MAXAUTO) {
            auto[nauto++] = new Auto(targa);
        } else {
            JOptionPane.showMessageDialog(null, "posti esauriti", " Errore", JOptionPane.ERROR_MESSAGE);
        }
    }

    public String datiScontrino() {
        String p = "";
        String r = "";
        String t = "";
        String i = "";
        String ou = "";
        double resto = 0.0;
        int orepassate = Math.abs(oraentrata - orauscita);
        double prezzo = 0.0;
        int minutipassati = Math.abs(minutientrata - minutiuscita);
        if (orepassate <= 1) {
            prezzo = 1.80;
        } else if ((orepassate == 1 && minutipassati >= 30) || orepassate == 2) {
            prezzo = 3.60;
        } else if ((orepassate == 2 && minutipassati >= 30) || orepassate == 3) {
            prezzo = 5.40;
        } else if ((orepassate == 3 && minutipassati >= 30) || orepassate == 4) {
            prezzo = 7.20;
        } else if ((orepassate == 4 && minutipassati >= 30) || orepassate <= 8) {
            prezzo = 7.50;
        } else if (orepassate <= 10) {
            prezzo = 7.50 + 1.80;
        } else {
            prezzo = 12.50;
        }
        if (getCredito() == 0) {
            JOptionPane.showMessageDialog(null, "devi pagare!", " Errore", JOptionPane.ERROR_MESSAGE);
            return "";
        } else if (getCredito() < prezzo) {
            double creditomancante = prezzo - getCredito();
            JOptionPane.showMessageDialog(null, "lei deve ancora:" + "\t" + df.format(creditomancante) + "\t" + "€", " Errore", JOptionPane.ERROR_MESSAGE);
            return "";
        } else if(getCredito() == prezzo){
            resto = getCredito() - prezzo;
            i = "l'importo pagato:" + "\t" + df.format(getCredito()) + "\t" + "€";
            p = "totale complessivo:" + "\t" + df.format(prezzo) + "\t" + "€";
            r = "il resto è:" + "\t" + df.format(resto) + "\t" + "€";
            t = "ore passate:" + "\t" + orepassate + "\t" + "minuti passati:" + minutipassati;
            ou = stampaOrarioUscita(orauscita,minutiuscita)+ "\n";
            return ou + "\n" + t + "\n" + p + "\n" + i + "\n" + r + "\n";
        }else{
            resto = getCredito() - prezzo;
            i = "l'importo pagato:" + "\t" + df.format(getCredito()) + "\t" + "€";
            p = "totale complessivo:" + "\t" + df.format(prezzo) + "\t" + "€";
            r = "il resto è:" + "\t" + df.format(resto) + "\t" + "€";
            t = "ore passate:" + "\t" + orepassate + "\t" + "minuti passati:" + minutipassati;
            ou = stampaOrarioUscita(orauscita,minutiuscita)+ "\n";
            return ou + "\n" + t + "\n" + p + "\n" + i + "\n" + r + "\n";
        }
        
    }

    public String Ticket() {
        String s = "";
        for (int i = 0; i < nauto; i++) {
            s += "ticket n°" + "\t" + i + "\n" + auto[i].stampaTarga() + "\n" + "è entrata alle" + "\t" + auto[i].stampaOrario(oraentrata,minutientrata) + "\n";
        }

        return s;

    }

    public String numeroScontrino() {
        String s = "";
        for (int i = 0; i < nauto; i++) {
            s += "scontrino n°" + "\t" + i + "\n";
        }
        return s;
    }

    public String stampaOrarioUscita(int orauscita, int minutiuscita) {
        String s = "";
        for (int i = 0; i < nauto; i++) {
            s += "è uscita alle" + "\t" + auto[i].stampaOrario(orauscita, minutiuscita);

        }
        return s;
    }

    @Override
    public void run() {
        display.setText(getAperto());
    }

}
private void entraAutoActionPerformed(java.awt.event.ActionEvent evt) {                                         
        inizializzaEntrata();
        if (p.getAperto().equals("siamo aperti")) {
            p.entraAuto(targa);
            selezionaAuto.addItem(targa);
            try {
                FileWriter w = new FileWriter("ticket.txt");
                BufferedWriter b = new BufferedWriter(w);
                b.write(p.Ticket() + "\n");
                b.flush();
                b.close();

            } catch (IOException ex) {
                Logger.getLogger(Interfaccia.class.getName()).log(Level.SEVERE, null, ex);
            }
            txtticket.setText(p.Ticket());
            postiliberi--;
            postioccupati++;
            if (postioccupati == p.massimoauto) {
                lblpostiauto.setText("posti esauriti");
            } else {
                lblpostiauto.setText("posti liberi:" + postiliberi + "\t" + "postioccupati:" + postioccupati);
            }
            txtoraentrata.setText("");
            txtminutientrata.setText("");
            txttarga.setText("");
            txtoraentrata.grabFocus();
            txtminutientrata.grabFocus();
            txttarga.grabFocus();
        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtoraentrata.setText("");
            txtminutientrata.setText("");
            txttarga.setText("");
            txtoraentrata.grabFocus();
            txtminutientrata.grabFocus();
            txttarga.grabFocus();
            lblpostiauto.setText("");
        }


    }                                         

    private void esceAutoActionPerformed(java.awt.event.ActionEvent evt) {                                         
        inizializzaUscita();
        if (p.getAperto().equals("siamo aperti")) {
            if (p.datiScontrino() != "") {
                String seleziona = selezionaAuto.getSelectedItem().toString();
                String Scontrino = p.numeroScontrino() + "targa:" + "\t" + seleziona + "\n" + p.datiScontrino();
                try {
                    FileWriter w = new FileWriter("scontrino.txt");
                    BufferedWriter b = new BufferedWriter(w);
                    b.write(Scontrino + "\n");
                    b.flush();
                    b.close();

                } catch (IOException ex) {
                    Logger.getLogger(Interfaccia.class.getName()).log(Level.SEVERE, null, ex);
                }
                postiliberi++;
                postioccupati--;
                lblpostiauto.setText("posti liberi:" + postiliberi + "\t" + "postioccupati:" + postioccupati);
                txtscontrino.setText(Scontrino);
                p.credito = 0.0;
                txtcredito.setText("");
                txtorauscita.setText("");
                txtminutiuscita.setText("");
                txttarga.setText("");
                txtorauscita.grabFocus();
                txtminutiuscita.grabFocus();
                txttarga.grabFocus();
                selezionaAuto.removeItem(targa);

            } else {

                txtscontrino.setText("");
                lblpostiauto.setText("posti liberi:" + postiliberi + "\t" + "postioccupati:" + postioccupati);

            }

        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtorauscita.setText("");
            txtminutiuscita.setText("");
            txttarga.setText("");
            txtorauscita.grabFocus();
            txtminutiuscita.grabFocus();
            txttarga.grabFocus();
            lblpostiauto.setText("");
        }

    }

permangono ancora i problemi dei ticket e degli scontrini.
Messaggio unito automaticamente:

penùltimo aggiornamento di codice:
Java:
    public void entraAuto(String targa, int oraentrata, int minutientrata) {
        if (nauto < MAXAUTO) {
            auto[nauto++] = new Auto(targa,oraentrata,minutientrata);
        } else {
            JOptionPane.showMessageDialog(null, "posti esauriti", " Errore", JOptionPane.ERROR_MESSAGE);
        }
    }

    public String datiScontrino(int orauscita, int minutiuscita) {
        String p = "";
        String r = "";
        String t = "";
        String i = "";
        String ou = "";
        double resto = 0.0;
        int orepassate = Math.abs(oraentrata - orauscita);
        double prezzo = 0.0;
        int minutipassati = Math.abs(minutientrata - minutiuscita);
        if (orepassate <= 1) {
            prezzo = 1.80;
        } else if ((orepassate == 1 && minutipassati >= 30) || orepassate == 2) {
            prezzo = 3.60;
        } else if ((orepassate == 2 && minutipassati >= 30) || orepassate == 3) {
            prezzo = 5.40;
        } else if ((orepassate == 3 && minutipassati >= 30) || orepassate == 4) {
            prezzo = 7.20;
        } else if ((orepassate == 4 && minutipassati >= 30) || orepassate <= 8) {
            prezzo = 7.50;
        } else if (orepassate <= 10) {
            prezzo = 7.50 + 1.80;
        } else {
            prezzo = 12.50;
        }
        if (getCredito() == 0) {
            JOptionPane.showMessageDialog(null, "devi pagare!", " Errore", JOptionPane.ERROR_MESSAGE);
            return "";
        } else if (getCredito() < prezzo) {
            double creditomancante = prezzo - getCredito();
            JOptionPane.showMessageDialog(null, "lei deve ancora:" + "\t" + df.format(creditomancante) + "\t" + "€", " Errore", JOptionPane.ERROR_MESSAGE);
            return "";
        } else if (getCredito() == prezzo) {
            resto = getCredito() - prezzo;
            i = "l'importo pagato:" + "\t" + df.format(getCredito()) + "\t" + "€";
            p = "totale complessivo:" + "\t" + df.format(prezzo) + "\t" + "€";
            r = "il resto è:" + "\t" + df.format(resto) + "\t" + "€";
            t = "ore passate:" + "\t" + orepassate + "\t" + "minuti passati:" + minutipassati;
            ou = "ora uscita:" + "\t" + orauscita + "\t" + "minuti uscita:" + minutiuscita;
            return ou + "\n" + t + "\n" + p + "\n" + i + "\n" + r + "\n";
        } else {
            resto = getCredito() - prezzo;
            i = "l'importo pagato:" + "\t" + df.format(getCredito()) + "\t" + "€";
            p = "totale complessivo:" + "\t" + df.format(prezzo) + "\t" + "€";
            r = "il resto è:" + "\t" + df.format(resto) + "\t" + "€";
            t = "ore passate:" + "\t" + orepassate + "\t" + "minuti passati:" + minutipassati;
            ou = "ora uscita:" + "\t" + orauscita + "\t" + "minuti uscita:" + minutiuscita;
            return ou + "\n" + t + "\n" + p + "\n" + i + "\n" + r + "\n";
        }

    }

    public String Ticket() {
        String s = "";
        for (int i = 0; i < nauto; i++) {
            s += "ticket n°" + "\t" + i + "\n" + auto[i].stampaTarga() + "\n" + auto[i].stampaorarioEntrata()+"\n";
        }

        return s;

    }

    public String numeroScontrino() {
        String s = "";
        for (int i = 0; i < nauto; i++) {
            s += "scontrino n°" + "\t" + i + "\n";
            
        }
        return s;

 private void entraAutoActionPerformed(java.awt.event.ActionEvent evt) {                                          
        inizializzaEntrata();
        if (p.getAperto().equals("siamo aperti")) {
            p.entraAuto(targa,oraentrata,minutientrata);
            selezionaAuto.addItem(targa);
            try {
                FileWriter w = new FileWriter("ticket.txt");
                BufferedWriter b = new BufferedWriter(w);
                b.write(p.Ticket() + "\n");
                b.flush();
                b.close();

            } catch (IOException ex) {
                Logger.getLogger(Interfaccia.class.getName()).log(Level.SEVERE, null, ex);
            }
            txtticket.setText(p.Ticket());
            postiliberi--;
            postioccupati++;
            if (postioccupati == p.massimoauto) {
                lblpostiauto.setText("posti esauriti");
            } else {
                lblpostiauto.setText("posti liberi:" + postiliberi + "\t" + "postioccupati:" + postioccupati);
            }
            txtoraentrata.setText("");
            txtminutientrata.setText("");
            txttarga.setText("");
            txtoraentrata.grabFocus();
            txtminutientrata.grabFocus();
            txttarga.grabFocus();
        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtoraentrata.setText("");
            txtminutientrata.setText("");
            txttarga.setText("");
            txtoraentrata.grabFocus();
            txtminutientrata.grabFocus();
            txttarga.grabFocus();
            lblpostiauto.setText("");
        }


    }                                         

    private void esceAutoActionPerformed(java.awt.event.ActionEvent evt) {                                         
        inizializzaUscita();
        if (p.getAperto().equals("siamo aperti")) {
            if (p.datiScontrino(orauscita,minutiuscita) != "") {
                String seleziona = selezionaAuto.getSelectedItem().toString();
                String Scontrino = p.numeroScontrino() + "targa:" + "\t" + seleziona + "\n" + p.datiScontrino(orauscita,minutiuscita);
                try {
                    FileWriter w = new FileWriter("scontrino.txt");
                    BufferedWriter b = new BufferedWriter(w);
                    b.write(Scontrino + "\n");
                    b.flush();
                    b.close();

                } catch (IOException ex) {
                    Logger.getLogger(Interfaccia.class.getName()).log(Level.SEVERE, null, ex);
                }
                postiliberi++;
                postioccupati--;
                lblpostiauto.setText("posti liberi:" + postiliberi + "\t" + "postioccupati:" + postioccupati);
                txtscontrino.setText(Scontrino);
                p.credito = 0.0;
                txtcredito.setText("");
                txtorauscita.setText("");
                txtminutiuscita.setText("");
                txttarga.setText("");
                txtorauscita.grabFocus();
                txtminutiuscita.grabFocus();
                txttarga.grabFocus();
                selezionaAuto.removeItem(targa);

            } else {

                txtscontrino.setText("");
                lblpostiauto.setText("posti liberi:" + postiliberi + "\t" + "postioccupati:" + postioccupati);

            }

        } else {
            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);
            txtorauscita.setText("");
            txtminutiuscita.setText("");
            txttarga.setText("");
            txtorauscita.grabFocus();
            txtminutiuscita.grabFocus();
            txttarga.grabFocus();
            lblpostiauto.setText("");
        }

    }                     
    }

problema scontrino finale.jpg

con gli ultimi aggiornamenti di codice tutto fila liscio tranne per un piccolo particolare come vedi dall'immagine non si può vedere scontrino n° 0 e sotto scontrino n° 1 è l'ultima correzione da fare. ticket è risolto. il resto dovrebbe essere giusto. io tranne il metodo numeroscontrino il resto non lo toccherei se non per semplificarlo in tal caso consigli.
 
Mi sembra sbagliata la logica di numeroScontrino():

Java:
    public String numeroScontrino() {
        String s = "";
        for (int i = 0; i < nauto; i++) {
            s += "scontrino n°" + "\t" + i + "\n";
            
        }
        return s;
}

Se la richiami solo quando esce l'auto non serve fare un ciclo for per nauto volte.
Ti conviene mantenere un contatore con il numero scontrino separato.

Inoltre ti consiglio di dare nomi più appropriati alle variabili. "p, s, t, ou" non dicono niente. Ricontrolla anche eventuali variabili che hai dichiarato e che non usi.

Questa parte ad esempio è semplificabile:
Java:
        if (getCredito() == 0) {
            JOptionPane.showMessageDialog(null, "devi pagare!", " Errore", JOptionPane.ERROR_MESSAGE);
            return "";
        } else if (getCredito() < prezzo) {
            double creditomancante = prezzo - getCredito();
            JOptionPane.showMessageDialog(null, "lei deve ancora:" + "\t" + df.format(creditomancante) + "\t" + "€", " Errore", JOptionPane.ERROR_MESSAGE);
            return "";
        } else if (getCredito() == prezzo) {
            resto = getCredito() - prezzo;
            i = "l'importo pagato:" + "\t" + df.format(getCredito()) + "\t" + "€";
            p = "totale complessivo:" + "\t" + df.format(prezzo) + "\t" + "€";
            r = "il resto è:" + "\t" + df.format(resto) + "\t" + "€";
            t = "ore passate:" + "\t" + orepassate + "\t" + "minuti passati:" + minutipassati;
            ou = "ora uscita:" + "\t" + orauscita + "\t" + "minuti uscita:" + minutiuscita;
            return ou + "\n" + t + "\n" + p + "\n" + i + "\n" + r + "\n";
        } else {
            resto = getCredito() - prezzo;
            i = "l'importo pagato:" + "\t" + df.format(getCredito()) + "\t" + "€";
            p = "totale complessivo:" + "\t" + df.format(prezzo) + "\t" + "€";
            r = "il resto è:" + "\t" + df.format(resto) + "\t" + "€";
            t = "ore passate:" + "\t" + orepassate + "\t" + "minuti passati:" + minutipassati;
            ou = "ora uscita:" + "\t" + orauscita + "\t" + "minuti uscita:" + minutiuscita;
            return ou + "\n" + t + "\n" + p + "\n" + i + "\n" + r + "\n";
        }

Ad esempio così (l'ultimo else-if e l'else mi sembrano identici; se fai un copy & paste verifica che funzioni effettivamente):

Java:
public String datiScontrino(int orauscita, int minutiuscita) {
    double resto = 0.0, prezzo = 0.0;
    int orepassate = Math.abs(oraentrata - orauscita);
    int minutipassati = Math.abs(minutientrata - minutiuscita);
    
    if (orepassate <= 1) {
        prezzo = 1.80;
    } else if ((orepassate == 1 && minutipassati >= 30) || orepassate == 2) {
        prezzo = 3.60;
    } else if ((orepassate == 2 && minutipassati >= 30) || orepassate == 3) {
        prezzo = 5.40;
    } else if ((orepassate == 3 && minutipassati >= 30) || orepassate == 4) {
        prezzo = 7.20;
    } else if ((orepassate == 4 && minutipassati >= 30) || orepassate <= 8) {
        prezzo = 7.50;
    } else if (orepassate <= 10) {
        prezzo = 7.50 + 1.80;
    } else {
        prezzo = 12.50;
    }
    
    double credito = getCredito();
    if (credito == 0) {
        JOptionPane.showMessageDialog(null, "devi pagare!", " Errore", JOptionPane.ERROR_MESSAGE);
        return "";
    } else if (credito < prezzo) {
        double creditomancante = prezzo - credito;
        JOptionPane.showMessageDialog(null, "lei deve ancora:" + "\t" + df.format(creditomancante) + "\t" + "€", " Errore", JOptionPane.ERROR_MESSAGE);
        return "";
    } else {
        resto = credito - prezzo;
        
        return "ora uscita:" + "\t" + orauscita + "\t" + "minuti uscita:" + minutiuscita +
               "ore passate:" + "\t" + orepassate + "\t" + "minuti passati:" + minutipassati +
               "totale complessivo:" + "\t" + df.format(prezzo) + "\t" + "€" +
               "l'importo pagato:" + "\t" + df.format(credito) + "\t" + "€" +
               "il resto è:" + "\t" + df.format(resto) + "\t" + "€";
    }
}

In generale, se hai bisogno del risultato di una funzione e questo non cambia, salvalo in una variabile. Evita N chiamate alla medesima funzione.

Siccome immagino sia un codice per un compito in un ITI diciamo che "può andar bene anche così"... altrimenti questa funzione sarebbe sbagliata, non è impostata correttamente.

Alcuni motivi per i quali non è proprio corretta:
  • il calcolo del prezzo dovrebbe essere separato da questa funzione
  • la in 2 casi non torna niente (stringa vuota), perchè mostra un messaggio a schermo

Comunque bravo, almeno ti sei impegnato e sei riuscito a venirne a capo senza aspettarti che qualcuno ti scrivesse il codice. ;) Il resto dei "problemi" (le cose che ti ho segnalato sopra anche, che non minano necessariamente il funzionamento) li risolverai con più pratica, con il proseguire dello studio e quindi con un pò di esperienza in più.
 
Ultima modifica:
grazie per i consigli e le correzioni.
Se la richiami solo quando esce l'auto non serve fare un ciclo for per nauto volte.
Ti conviene mantenere un contatore con il numero scontrino separato.
si lo richiamo solo quando esce un'auto, ogni volta che un auto il contatore del numero degli scontrini dovrebbe aumentare perchè ogni auto prima paga e poi viene stampato lo scontrino.
Messaggio unito automaticamente:

ho risolto anche il problema del numero dello scontrino il programma diciamo funziona correntemente. poi in futuro vedro come semplificarlo/ rittocarlo ect... grazie alle tue dritte.
 
  • Mi piace
Reazioni: DispatchCode
più che altro non esegue tutti i possibili risultati perchè considera le ore ma non i giorni o i mesi o gli anni.


classe parcheggio:


Java:
import java.text.DecimalFormat;

import java.time.LocalDate;

import java.time.LocalTime;

import java.time.format.DateTimeFormatter;

import java.util.Calendar;

import java.util.GregorianCalendar;

import java.util.Locale;

import javax.swing.JComboBox;

import javax.swing.JOptionPane;

import javax.swing.JTextArea;


public class Parcheggio implements Runnable {


    int nveicoli, massimoveicoli;

    static final int MAXVEICOLI = 200;

    Veicolo[] v;

    double credito;

    DecimalFormat df = new DecimalFormat("#,##0.00");

    JTextArea display;


    public Parcheggio() {

        this.v = new Veicolo[MAXVEICOLI];

        this.nveicoli = 0;

        this.massimoveicoli = MAXVEICOLI;

        this.credito = 0;


    }


    public Parcheggio(JTextArea display) {

        this.display = display;

    }


    public int getVeicolo() {

        return nveicoli;

    }


    public Veicolo getVeicolo(int i) {

        return v[i];

    }


    public String getAperto() {

        while (true) {

            GregorianCalendar gc = new GregorianCalendar();

            int ore = gc.get(Calendar.HOUR_OF_DAY);

            int oraapertura = 8;

            int orachiusura = 24;

            if (ore >= oraapertura && ore <= orachiusura) {

                return "siamo aperti";

            } else {

                return "siamo chiusi" + "\n" + "l'orario apertura é dalle:" + "\t" + oraapertura + "alle:" + "\t" + orachiusura;

            }

        }

    }


    public String acetta10cent(String par) {

        if (par.equalsIgnoreCase("0.1")) {

            credito += 0.1;

        }

        return df.format(credito) + "\t" + "€";


    }


    public String acetta1cent(String par) {

        if (par.equalsIgnoreCase("0.01")) {

            credito += 0.01;

        }

        return df.format(credito) + "\t" + "€";


    }


    public String acetta5cent(String par) {

        if (par.equalsIgnoreCase("0.05")) {

            credito += 0.05;

        }

        return df.format(credito) + "\t" + "€";


    }


    public String acetta2cent(String par) {

        if (par.equalsIgnoreCase("0.02")) {

            credito += 0.02;

        }

        return df.format(credito) + "\t" + "€";


    }


    public String acettaCento(String par) {

        if (par.equalsIgnoreCase("100.0")) {

            credito += 100.0;

        }

        return df.format(credito) + "\t" + "€";


    }


    public String acetta20cent(String par) {

        if (par.equalsIgnoreCase("0.2")) {

            credito += 0.2;

        }

        return df.format(credito) + "\t" + "€";

    }


    public String acetta50cent(String par) {

        if (par.equalsIgnoreCase("0.5")) {

            credito += 0.5;

        }

        return df.format(credito) + "\t" + "€";

    }


    public String acettaUno(String par) {

        if (par.equalsIgnoreCase("1.0")) {

            credito += 1.0;

        }

        return df.format(credito) + "\t" + "€";

    }


    public String acettaDue(String par) {

        if (par.equalsIgnoreCase("2.0")) {

            credito += 2.0;

        }

        return df.format(credito) + "\t" + "€";

    }


    public String acettaCinque(String par) {

        if (par.equalsIgnoreCase("5.0")) {

            credito += 5.0;

        }

        return df.format(credito) + "\t" + "€";

    }


    public String acettaDieci(String par) {

        if (par.equalsIgnoreCase("10.0")) {

            credito += 10.0;

        }

        return df.format(credito) + "\t" + "€";

    }


    public String acettaCiquanta(String par) {

        if (par.equalsIgnoreCase("50.0")) {

            credito += 50.0;

        }

        return df.format(credito) + "\t" + "€";

    }


    public String acettaCinquecento(String par) {

        if (par.equalsIgnoreCase("500.0")) {

            credito += 500.0;

        }

        return df.format(credito) + "\t" + "€";

    }


    public String acettaVenti(String par) {

        if (par.equalsIgnoreCase("20.0")) {

            credito += 20.0;

        }

        return df.format(credito) + "\t" + "€";

    }


    public double getCredito() {

        return credito;

    }


    public void entraVeicolo(String targa, String tipo, int oraentrata, int minutientrata, int giornoentrata, int meseentrata, int annoentrata) {

        if (nveicoli < MAXVEICOLI) {

            v[nveicoli++] = new Veicolo(targa, tipo, oraentrata, minutientrata, giornoentrata, meseentrata, annoentrata);

        } else {

            JOptionPane.showMessageDialog(null, "posti esauriti", " Errore", JOptionPane.ERROR_MESSAGE);

        }

    }


    public String esceVeicolo(int giornouscita, int meseuscita, int annouscita, int orauscita, int minutiuscita, JComboBox selezionaTipo, JComboBox selezionaVeicolo) {

    String tariffa = "";

        String r = "";

        String tempopassato = "";

        String importo = "";

        String orarioUscita = "";

        String risultato = "";

        String tipo = selezionaTipo.getSelectedItem().toString();

        String seleziona = selezionaVeicolo.getSelectedItem().toString();

        int indice = seleziona.length();

        String selezionato = seleziona.substring(0, indice - 16);

        char giornoentratadecina = seleziona.charAt(indice - 15);

        char giornoentrataunita = seleziona.charAt(indice - 13);

        char meseentratadecina = seleziona.charAt(indice - 13);

        char meseentrataunita = seleziona.charAt(indice - 12);

        char annoentratamigliaia = seleziona.charAt(indice - 10);

        char annoentratacentinaia = seleziona.charAt(indice - 9);

        char annoentratadecina = seleziona.charAt(indice - 8);

        char annoentrataunita = seleziona.charAt(indice - 7);

        char oraentratadecina = seleziona.charAt(indice - 5);

        char oraentrataunita = seleziona.charAt(indice - 4);

        char minentratadecina = seleziona.charAt(indice - 2);

        char minentrataunita = seleziona.charAt(indice - 1);

        int valoredecinagiornoentrata = (Integer.parseInt(String.valueOf(giornoentratadecina))) * 10;

        int valoreunitagiornentrata = Integer.parseInt(String.valueOf(giornoentrataunita));

        int valoredecinameseentrata = (Integer.parseInt(String.valueOf(meseentratadecina))) * 10;

        int valoreunitameseentrata = Integer.parseInt(String.valueOf(meseentrataunita));

        int valoreannoentratamigliaia = (Integer.parseInt(String.valueOf(annoentratamigliaia))) * 1000;

        int valoreannoentratacentinaia = (Integer.parseInt(String.valueOf(annoentratacentinaia))) * 100;

        int valoreannoentratadecina = (Integer.parseInt(String.valueOf(annoentratadecina))) * 10;

        int valoreannoentrataunita = Integer.parseInt(String.valueOf(annoentrataunita));

        int giornoentrata = valoredecinagiornoentrata + valoreunitagiornentrata;

        int meseentrata = valoredecinameseentrata + valoreunitameseentrata;

        int annoentrata = valoreannoentratamigliaia + valoreannoentratacentinaia + valoreannoentratadecina + valoreannoentrataunita;

        int valoreunitaora = Integer.parseInt(String.valueOf(oraentrataunita));

        int valoreunitamin = Integer.parseInt(String.valueOf(minentrataunita));

        int valoredecinaora = (Integer.parseInt(String.valueOf(oraentratadecina))) * 10;

        int valoredecinamin = (Integer.parseInt(String.valueOf(minentratadecina))) * 10;

        int oraentrata = valoredecinaora + valoreunitaora;

        int minutientrata = valoredecinamin + valoreunitamin;

        int orepassate = 0;

        double resto = 0.0;

        double prezzo = 0.0;

        double orario = 0.0, giornaliero = 0.0, mensile = 0.0, annuale = 0.0;

        int minutipassati = Math.abs(minutientrata - minutiuscita);

        LocalTime time = LocalTime.of(orauscita, minutiuscita);

        LocalDate datauscita = LocalDate.of(annouscita, meseuscita, giornouscita);

        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd/MM/yyyy").withLocale(Locale.ITALY);

        String stampadatauscita = "data Uscita:" + "\t" + datauscita.format(dtf);

        int giornipassati = Math.abs(giornoentrata - giornouscita);

        int mesipassati = Math.abs(meseentrata - meseuscita);

        int annipassati = Math.abs(annoentrata - annouscita);

if (oraentrata == 0) {

                orepassate = Math.abs(24 - orauscita);

            } else if (orauscita == 0) {

                orepassate = Math.abs(oraentrata - 24);

            } else {

                orepassate = Math.abs(oraentrata - orauscita);

            }

       if (orauscita < 0 || minutiuscita < 0 || orauscita >= 24 || minutiuscita >= 60) {

            tempopassato = "";

            orarioUscita = "";

            risultato = "";

}else { 

           tempopassato = "ore passate:" + "\t" + orepassate + "\t" + "minuti passati:" + "\t" + minutipassati;

            orarioUscita = "orario Uscita:" + "\t" + time.toString();

 

    if (orepassate == 0 && minutipassati <= 20) {

                if (getCredito() > 0) {

                    risultato = "targa:" + selezionato + stampadatauscita + "\n" + orarioUscita + "\n" + tempopassato + "\n" + "annulato!" + "\n" + "le saranno riborsati:" + df.format(getCredito()) + "€";

                } else {

                    risultato = "targa:" + selezionato + stampadatauscita + "\n" + orarioUscita + "\n" + tempopassato + "\n" + "annulato!";

                }

}else {

    if (tipo.equals("Ciclomotore") || tipo.equals("Moto")) {

   if (orepassate <= 1) {

                    orario = 0.50;

                    prezzo = orario;

                } else if ((orepassate == 1 && minutipassati >= 30) || orepassate == 2) {

                    orario = 1.00;

                    prezzo = orario;

                } else if ((orepassate == 2 && minutipassati >= 30) || orepassate == 3) {

                    orario = 1.50;

                    prezzo = orario;

                } else if ((orepassate == 3 && minutipassati >= 30) || orepassate == 4) {

                    orario = 2.00;

                    prezzo = orario;

                } else if ((orepassate == 4 && minutipassati >= 30) || orepassate <= 8) {

                    orario = 2.50;

                    prezzo = orario;

                } else if (orepassate <= 10) {

                    orario = 3.00;

                    prezzo = orario;

                } else {

                    giornaliero = 5.00;

                    mensile = 150;

                    annuale = 1500;

                    if (giornipassati == 0 ||(orepassate>=10 && minutipassati >=30)) {

                        prezzo = giornaliero;

                    } else if (giornipassati >= 1) {

                        prezzo = (giornipassati * giornaliero) + orario;

                    } else if (mesipassati == 0) {


                        if (giornipassati == 0) {

                            prezzo = mensile;

                        } else {

                            prezzo = mensile + (giornaliero * giornipassati) + orario;

                        }


                    } else if (mesipassati >= 1) {


                        if (giornipassati == 0) {

                            prezzo = mensile * mesipassati;

                        } else {

                            prezzo = (mensile * mesipassati) + orario + (giornaliero * giornipassati);

                        }


                    } else if (annipassati == 0) {


                        if (giornipassati == 0 && mesipassati == 0) {

                            prezzo = annuale;

                        } else  {

                            prezzo = (mensile * mesipassati) + orario + (giornaliero * giornipassati);

                        }

                    } else{

                        if (giornipassati == 0  && mesipassati == 0) {

                        prezzo = annuale * annipassati;

                    } else  {

                        prezzo = (annuale * annipassati) + (mensile * mesipassati) + orario + (giornaliero * giornipassati);

                    }

                    }

              

}

        }else if (tipo.equals("Auto")) {

                 if (orepassate <= 1) {

                    orario = 1.80;

                    prezzo = orario;

                } else if ((orepassate == 1 && minutipassati >= 30) || orepassate == 2) {

                    orario = 3.60;

                    prezzo = orario;

                } else if ((orepassate == 2 && minutipassati >= 30) || orepassate == 3) {

                    orario = 5.40;

                    prezzo = orario;

                } else if ((orepassate == 3 && minutipassati >= 30) || orepassate == 4) {

                    orario = 7.20;

                    prezzo = orario;

                } else if ((orepassate == 4 && minutipassati >= 30) || orepassate <= 8) {

                    orario = 7.50;

                    prezzo = orario;

                } else if (orepassate <= 10) {

                    orario = 9.30;

                    prezzo = orario;

                } else {

                    giornaliero = 12.50;

                    mensile = 300;

                    annuale = 3000;

              

                    if (giornipassati == 0 ||(orepassate>=10 && minutipassati >=30)) {

                        prezzo = giornaliero;

                    } else if (giornipassati >= 1) {

                        prezzo = (giornipassati * giornaliero) + orario;

                    } else if (mesipassati == 0) {


                        if (giornipassati == 0) {

                            prezzo = mensile;

                        } else {

                            prezzo = mensile + (giornaliero * giornipassati) + orario;

                        }


                    } else if (mesipassati >= 1) {


                        if (giornipassati == 0) {

                            prezzo = mensile * mesipassati;

                        } else {

                            prezzo = (mensile * mesipassati) + orario + (giornaliero * giornipassati);

                        }


                    } else if (annipassati == 0) {


                        if (giornipassati == 0 && mesipassati == 0) {

                            prezzo = annuale;

                        } else  {

                            prezzo = (mensile * mesipassati) + orario + (giornaliero * giornipassati);

                        }

                    } else{

                        if (giornipassati == 0 && orepassate == 0 && mesipassati == 0) {

                        prezzo = annuale * annipassati;

                    } else  {

                        prezzo = (annuale * annipassati) + (mensile * mesipassati) + orario + (giornaliero * giornipassati);

                    }

                    }     

                    

        }


}else{ 

    if (orepassate <= 1) {

                orario = 3.00;

                prezzo = orario;

            } else if ((orepassate == 1 && minutipassati >= 30) || orepassate == 2) {

                orario = 6.00;

                prezzo = orario;

            } else if ((orepassate == 2 && minutipassati >= 30) || orepassate == 3) {

                orario = 9.00;

                prezzo = orario;

            } else if ((orepassate == 3 && minutipassati >= 30) || orepassate == 4) {

                orario = 12.00;

                prezzo = orario;

            } else if ((orepassate == 4 && minutipassati >= 30) || orepassate <= 8) {

                orario = 15.00;

                prezzo = orario;

            } else if (orepassate <= 10) {

                orario = 18.00;

                prezzo = orario;

            } else {}

                giornaliero = 21.00;

                     annuale = 4000;

                       mensile = 400;

                    if (giornipassati == 0 ||(orepassate>=10 && minutipassati >=30)) {

                        prezzo = giornaliero;

                    } else if (giornipassati >= 1) {

                        prezzo = (giornipassati * giornaliero) + orario;

                    } else if (mesipassati == 0) {


                        if (giornipassati == 0) {

                            prezzo = mensile;

                        } else {

                            prezzo = mensile + (giornaliero * giornipassati) + orario;

                        }


                    } else if (mesipassati >= 1) {


                        if (giornipassati == 0) {

                            prezzo = mensile * mesipassati;

                        } else {

                            prezzo = (mensile * mesipassati) + orario + (giornaliero * giornipassati);

                        }


                    } else if (annipassati == 0) {


                        if (giornipassati == 0 && mesipassati == 0) {

                            prezzo = annuale;

                        } else  {

                            prezzo = (mensile * mesipassati) + orario + (giornaliero * giornipassati);

                        }

                    } else{

                        if (giornipassati == 0 && orepassate == 0 && mesipassati == 0) {

                        prezzo = annuale * annipassati;

                    } else  {

                        prezzo = (annuale * annipassati) + (mensile * mesipassati) + orario + (giornaliero * giornipassati);

                    } 

                        }

}

}

    tempopassato = "giorni passati:" + "\t" + giornipassati + "\t" + "mesi passati:" + mesipassati + "\t" + "anni passati:" + annipassati + "\n" + "ore passate:" + "\t" + orepassate + "\t" +

"minuti passati:" + "\t" + minutipassati;

            if (getCredito() == 0) {

                JOptionPane.showMessageDialog(null, "devi pagare:" + df.format(prezzo) + "€", " Errore", JOptionPane.ERROR_MESSAGE);

                risultato = "";

            } else if (getCredito() < prezzo) {

                double creditomancante = prezzo - getCredito();

                JOptionPane.showMessageDialog(null, "lei deve ancora:" + df.format(creditomancante) + "€", " Errore", JOptionPane.ERROR_MESSAGE);

                risultato = "";

            } else {

                resto = getCredito() - prezzo;

                importo = "l'importo pagato:" + "\t" + df.format(getCredito()) + "€";

                if (resto == 0) {

                    r = "";

                } else {

                    r = "il resto è :" + "\t" + df.format(resto) + "€";

                }

                tariffa = "totale complessivo:" + df.format(prezzo) + "€";

                risultato = "targa:" + selezionato + "\n" + stampadatauscita + "\n" + orarioUscita + "\n" + tempopassato + "\n" + tariffa + "\n" + importo + "\n" + r;


            }

       } 

       return risultato;

    }

 

    public String Ticket() {

        String s = "";

        for (int i = 0; i < nveicoli; i++) {

            s += "ticket n°" + "\t" + i + "\n" + v[i].toString();


        }


        return s;


    }


    @Override

    public void run() {

        display.setText(getAperto());

    }


    }


classe veicolo:


Java:
import java.time.LocalDate;

import java.time.LocalTime;

import java.time.format.DateTimeFormatter;

import java.util.Locale;


public class Veicolo {


    String targa, tipo;

    int oraentrata, minutientrata,giornoentrata, meseentrata, annoentrata;


    public Veicolo(String targa, String tipo, int oraentrata, int minutientrata, int giornoentrata,int meseentrata, int annoentrata) {

        this.targa = targa;

        this.minutientrata = minutientrata;

        this.oraentrata = oraentrata;

        this.tipo = tipo;

        this.annoentrata=annoentrata;

        this.giornoentrata=giornoentrata;

        this.meseentrata=meseentrata;

    }


    public String stampaTarga() {

        if (targa.equalsIgnoreCase("")) {

            return "";

        } else {

            return "targa:" + targa;

        }


    }


    public String stampaorarioEntrata() {

        String orario = "";

        if (oraentrata > 24 || minutientrata > 60 || oraentrata < 0 || minutientrata < 0) {

            orario = "";

        } else {

            LocalTime time = LocalTime.of(oraentrata, minutientrata);

            orario = "Orario Entrata:" + time.toString();

        }

        return orario;


    }


    public String stampadataEntrata() {

        LocalDate dataentrata = LocalDate.of(annoentrata, meseentrata, giornoentrata);

        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd/MM/yyyy").withLocale(Locale.ITALY);

        return  dataentrata.format(dtf);

    }


    public String stampaTipo() {

        return tipo;

    }


    @Override

    public String toString() {

        if (stampaorarioEntrata().equalsIgnoreCase("")) {

            return "";

        } else {

            return stampaTarga() + "\n" + stampaTipo() + "\n" + stampadataEntrata()+"\n"+stampaorarioEntrata() + "\n";

        }


    }


}

classe interfaccia:


Java:
import java.io.BufferedWriter;

import java.io.FileWriter;

import java.io.IOException;

import java.time.LocalDate;

import java.time.LocalTime;

import java.time.format.DateTimeFormatter;

import java.util.Locale;

import java.util.logging.Level;

import java.util.logging.Logger;

import javax.swing.JOptionPane;


public class Interfaccia extends javax.swing.JDialog {


    Integer oraentrata, minutientrata, orauscita, minutiuscita, postiliberi, postioccupati, numeroscontrino;

    String targa, tipo;

    Parcheggio p;

    Integer giornoentrata, giornouscita, meseentrata, meseuscita, annoentrata, annouscita;

    DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd/MM/yyyy").withLocale(Locale.ITALY);


    public Interfaccia(java.awt.Frame parent, boolean modal) {

        super(parent, modal);

        initComponents();


        this.setLocationRelativeTo(null);

        Thread t = new Thread(new Orologio(orologio));

        t.start();

        Thread t2 = new Thread(new Parcheggio(display));

        t2.start();

        p = new Parcheggio();

        postiliberi = p.massimoveicoli;

        postioccupati = 0;

        numeroscontrino = 0;

    }


    @SuppressWarnings("unchecked")

    // <editor-fold defaultstate="collapsed" desc="Generated Code">                         

    private void initComponents() {


        selezionaVeicolo = new javax.swing.JComboBox();

        lblorauscita = new javax.swing.JLabel();

        txtorauscita = new javax.swing.JTextField();

        jScrollPane3 = new javax.swing.JScrollPane();

        display = new javax.swing.JTextArea();

        jScrollPane2 = new javax.swing.JScrollPane();

        txtticket = new javax.swing.JTextArea();

        selezionaTipo = new javax.swing.JComboBox<>();

        esceVeicolo = new javax.swing.JButton();

        acetta50euro = new javax.swing.JButton();

        acetta100euro = new javax.swing.JButton();

        acetta500euro = new javax.swing.JButton();

        acetta10cent = new javax.swing.JButton();

        acetta2cent = new javax.swing.JButton();

        acetta20cent = new javax.swing.JButton();

        acetta1cent = new javax.swing.JButton();

        acetta50cent = new javax.swing.JButton();

        acetta5cent = new javax.swing.JButton();

        acetta1euro = new javax.swing.JButton();

        txtposti = new javax.swing.JTextField();

        acetta2euro = new javax.swing.JButton();

        acetta5euro = new javax.swing.JButton();

        acetta10euro = new javax.swing.JButton();

        lbloraentrata = new javax.swing.JLabel();

        lblminutientrata = new javax.swing.JLabel();

        txtoraentrata = new javax.swing.JTextField();

        txtminutientrata = new javax.swing.JTextField();

        entraVeicolo = new javax.swing.JButton();

        lbltarga = new javax.swing.JLabel();

        txttarga = new javax.swing.JTextField();

        orologio = new javax.swing.JLabel();

        acetta20euro = new javax.swing.JButton();

        txtcredito = new javax.swing.JTextField();

        lblminutiuscita = new javax.swing.JLabel();

        txtminutiuscita = new javax.swing.JTextField();

        jScrollPane1 = new javax.swing.JScrollPane();

        txtscontrino = new javax.swing.JTextArea();

        lblgiornoentrata = new javax.swing.JLabel();

        txtgiornoentrata = new javax.swing.JTextField();

        lblmeseentrata = new javax.swing.JLabel();

        txtmeseentrata = new javax.swing.JTextField();

        lblannoentrata = new javax.swing.JLabel();

        txtannoentrata = new javax.swing.JTextField();

        lblgiornouscita = new javax.swing.JLabel();

        txtgiornouscita = new javax.swing.JTextField();

        lblmeseuscita = new javax.swing.JLabel();

        lblannouscita = new javax.swing.JLabel();

        txtmeseuscita = new javax.swing.JTextField();

        txtannouscita = new javax.swing.JTextField();


        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);


        selezionaVeicolo.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

        selezionaVeicolo.setForeground(java.awt.Color.blue);

        selezionaVeicolo.setToolTipText("");


        lblorauscita.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

        lblorauscita.setText("ora uscita:");


        txtorauscita.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N


        display.setEditable(false);

        display.setColumns(20);

        display.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N

        display.setRows(5);

        display.setDisabledTextColor(java.awt.Color.black);

        display.setEnabled(false);

        jScrollPane3.setViewportView(display);


        txtticket.setEditable(false);

        txtticket.setColumns(20);

        txtticket.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N

        txtticket.setRows(5);

        txtticket.setDisabledTextColor(java.awt.Color.black);

        txtticket.setEnabled(false);

        jScrollPane2.setViewportView(txtticket);


        selezionaTipo.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

        selezionaTipo.setForeground(java.awt.Color.blue);

        selezionaTipo.setModel(new javax.swing.DefaultComboBoxModel<>(new String[] { "Ciclomotore", "Moto", "Auto", "Camion", "Autobus" }));


        esceVeicolo.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

        esceVeicolo.setForeground(java.awt.Color.red);

        esceVeicolo.setText("esceVeicolo");

        esceVeicolo.addActionListener(new java.awt.event.ActionListener() {

            public void actionPerformed(java.awt.event.ActionEvent evt) {

                esceVeicoloActionPerformed(evt);

            }

        });


        acetta50euro.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

        acetta50euro.setForeground(java.awt.Color.blue);

        acetta50euro.setText("50€");

        acetta50euro.addActionListener(new java.awt.event.ActionListener() {

            public void actionPerformed(java.awt.event.ActionEvent evt) {

                acetta50euroActionPerformed(evt);

            }

        });


        acetta100euro.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

        acetta100euro.setForeground(java.awt.Color.blue);

        acetta100euro.setText("100€");

        acetta100euro.addActionListener(new java.awt.event.ActionListener() {

            public void actionPerformed(java.awt.event.ActionEvent evt) {

                acetta100euroActionPerformed(evt);

            }

        });


        acetta500euro.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

        acetta500euro.setForeground(java.awt.Color.blue);

        acetta500euro.setText("500€");

        acetta500euro.addActionListener(new java.awt.event.ActionListener() {

            public void actionPerformed(java.awt.event.ActionEvent evt) {

                acetta500euroActionPerformed(evt);

            }

        });


        acetta10cent.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

        acetta10cent.setForeground(java.awt.Color.blue);

        acetta10cent.setText("0.1 €");

        acetta10cent.addActionListener(new java.awt.event.ActionListener() {

            public void actionPerformed(java.awt.event.ActionEvent evt) {

                acetta10centActionPerformed(evt);

            }

        });


        acetta2cent.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

        acetta2cent.setForeground(java.awt.Color.blue);

        acetta2cent.setText("0.02€");

        acetta2cent.addActionListener(new java.awt.event.ActionListener() {

            public void actionPerformed(java.awt.event.ActionEvent evt) {

                acetta2centActionPerformed(evt);

            }

        });


        acetta20cent.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

        acetta20cent.setForeground(java.awt.Color.blue);

        acetta20cent.setText("0.2 €");

        acetta20cent.addActionListener(new java.awt.event.ActionListener() {

            public void actionPerformed(java.awt.event.ActionEvent evt) {

                acetta20centActionPerformed(evt);

            }

        });


        acetta1cent.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

        acetta1cent.setForeground(java.awt.Color.blue);

        acetta1cent.setText("0.01€");

        acetta1cent.addActionListener(new java.awt.event.ActionListener() {

            public void actionPerformed(java.awt.event.ActionEvent evt) {

                acetta1centActionPerformed(evt);

            }

        });


        acetta50cent.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

        acetta50cent.setForeground(java.awt.Color.blue);

        acetta50cent.setText("0.5 €");

        acetta50cent.addActionListener(new java.awt.event.ActionListener() {

            public void actionPerformed(java.awt.event.ActionEvent evt) {

                acetta50centActionPerformed(evt);

            }

        });


        acetta5cent.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

        acetta5cent.setForeground(java.awt.Color.blue);

        acetta5cent.setText("0.05€");

        acetta5cent.addActionListener(new java.awt.event.ActionListener() {

            public void actionPerformed(java.awt.event.ActionEvent evt) {

                acetta5centActionPerformed(evt);

            }

        });


        acetta1euro.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

        acetta1euro.setForeground(java.awt.Color.blue);

        acetta1euro.setText("1 €");

        acetta1euro.addActionListener(new java.awt.event.ActionListener() {

            public void actionPerformed(java.awt.event.ActionEvent evt) {

                acetta1euroActionPerformed(evt);

            }

        });


        txtposti.setEditable(false);

        txtposti.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

        txtposti.setHorizontalAlignment(javax.swing.JTextField.CENTER);

        txtposti.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(0, 0, 0), 1, true));

        txtposti.setDisabledTextColor(java.awt.Color.black);

        txtposti.setEnabled(false);


        acetta2euro.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

        acetta2euro.setForeground(java.awt.Color.blue);

        acetta2euro.setText("2 €");

        acetta2euro.addActionListener(new java.awt.event.ActionListener() {

            public void actionPerformed(java.awt.event.ActionEvent evt) {

                acetta2euroActionPerformed(evt);

            }

        });


        acetta5euro.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

        acetta5euro.setForeground(java.awt.Color.blue);

        acetta5euro.setText("5 €");

        acetta5euro.addActionListener(new java.awt.event.ActionListener() {

            public void actionPerformed(java.awt.event.ActionEvent evt) {

                acetta5euroActionPerformed(evt);

            }

        });


        acetta10euro.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

        acetta10euro.setForeground(java.awt.Color.blue);

        acetta10euro.setText("10 €");

        acetta10euro.addActionListener(new java.awt.event.ActionListener() {

            public void actionPerformed(java.awt.event.ActionEvent evt) {

                acetta10euroActionPerformed(evt);

            }

        });


        lbloraentrata.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

        lbloraentrata.setText("ora entrata:");


        lblminutientrata.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

        lblminutientrata.setText("minuti entrata:");


        txtoraentrata.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N

        txtoraentrata.setToolTipText("");

        txtoraentrata.setName(""); // NOI18N


        txtminutientrata.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N


        entraVeicolo.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

        entraVeicolo.setForeground(java.awt.Color.red);

        entraVeicolo.setText("entraVeicolo");

        entraVeicolo.addActionListener(new java.awt.event.ActionListener() {

            public void actionPerformed(java.awt.event.ActionEvent evt) {

                entraVeicoloActionPerformed(evt);

            }

        });


        lbltarga.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

        lbltarga.setText("targa:");


        txttarga.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N


        orologio.setBackground(java.awt.Color.white);

        orologio.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

        orologio.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);

        orologio.setBorder(javax.swing.BorderFactory.createBevelBorder(javax.swing.border.BevelBorder.RAISED, java.awt.Color.red, java.awt.Color.red, java.awt.Color.red, java.awt.Color.red));

        orologio.setEnabled(false);

        orologio.setOpaque(true);


        acetta20euro.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

        acetta20euro.setForeground(java.awt.Color.blue);

        acetta20euro.setText("20 €");

        acetta20euro.addActionListener(new java.awt.event.ActionListener() {

            public void actionPerformed(java.awt.event.ActionEvent evt) {

                acetta20euroActionPerformed(evt);

            }

        });


        txtcredito.setEditable(false);

        txtcredito.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N

        txtcredito.setForeground(java.awt.Color.red);

        txtcredito.setHorizontalAlignment(javax.swing.JTextField.CENTER);

        txtcredito.setDisabledTextColor(java.awt.Color.red);

        txtcredito.setEnabled(false);


        lblminutiuscita.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

        lblminutiuscita.setText("minuti uscita:");


        txtminutiuscita.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N


        txtscontrino.setEditable(false);

        txtscontrino.setColumns(20);

        txtscontrino.setFont(new java.awt.Font("Tahoma", 1, 14)); // NOI18N

        txtscontrino.setRows(5);

        txtscontrino.setDisabledTextColor(java.awt.Color.black);

        txtscontrino.setEnabled(false);

        jScrollPane1.setViewportView(txtscontrino);


        lblgiornoentrata.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

        lblgiornoentrata.setText("Giorno entrata:");


        txtgiornoentrata.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N


        lblmeseentrata.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

        lblmeseentrata.setText("Mese entrata:");


        txtmeseentrata.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N


        lblannoentrata.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

        lblannoentrata.setText("Anno entrata:");


        txtannoentrata.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N


        lblgiornouscita.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

        lblgiornouscita.setText("Giorno uscita:");


        txtgiornouscita.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N


        lblmeseuscita.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

        lblmeseuscita.setText("Mese uscita:");


        lblannouscita.setFont(new java.awt.Font("Tahoma", 1, 12)); // NOI18N

        lblannouscita.setText("Anno uscita:");


        txtmeseuscita.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N


        txtannouscita.setFont(new java.awt.Font("Tahoma", 0, 12)); // NOI18N


        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());

        getContentPane().setLayout(layout);

        layout.setHorizontalGroup(

            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

            .addGroup(layout.createSequentialGroup()

                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

                    .addGroup(layout.createSequentialGroup()

                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)

                            .addComponent(orologio, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

                            .addComponent(jScrollPane3, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 302, Short.MAX_VALUE)

                            .addComponent(jScrollPane2, javax.swing.GroupLayout.Alignment.LEADING))

                        .addGap(18, 18, 18)

                        .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 425, Short.MAX_VALUE))

                    .addGroup(layout.createSequentialGroup()

                        .addContainerGap()

                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

                            .addGroup(layout.createSequentialGroup()

                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

                                    .addGroup(layout.createSequentialGroup()

                                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)

                                            .addComponent(acetta2cent, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

                                            .addComponent(acetta5cent, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

                                            .addComponent(acetta1cent))

                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

                                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)

                                            .addGroup(layout.createSequentialGroup()

                                                .addComponent(acetta10cent, javax.swing.GroupLayout.PREFERRED_SIZE, 74, javax.swing.GroupLayout.PREFERRED_SIZE)

                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

                                                .addComponent(acetta1euro, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))

                                            .addGroup(layout.createSequentialGroup()

                                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)

                                                    .addComponent(acetta50cent, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

                                                    .addComponent(acetta20cent, javax.swing.GroupLayout.PREFERRED_SIZE, 74, javax.swing.GroupLayout.PREFERRED_SIZE))

                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

                                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)

                                                    .addComponent(acetta2euro, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

                                                    .addComponent(acetta5euro, javax.swing.GroupLayout.PREFERRED_SIZE, 64, javax.swing.GroupLayout.PREFERRED_SIZE))))

                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

                                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

                                            .addGroup(layout.createSequentialGroup()

                                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

                                                    .addComponent(acetta50euro, javax.swing.GroupLayout.Alignment.TRAILING)

                                                    .addComponent(acetta20euro, javax.swing.GroupLayout.Alignment.TRAILING))

                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

                                                .addComponent(acetta500euro))

                                            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()

                                                .addComponent(acetta10euro)

                                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

                                                .addComponent(acetta100euro))))

                                    .addComponent(entraVeicolo, javax.swing.GroupLayout.PREFERRED_SIZE, 381, javax.swing.GroupLayout.PREFERRED_SIZE))

                                .addGap(18, 18, 18)

                                .addComponent(txtcredito, javax.swing.GroupLayout.PREFERRED_SIZE, 116, javax.swing.GroupLayout.PREFERRED_SIZE))

                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)

                                .addGroup(layout.createSequentialGroup()

                                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

                                        .addComponent(lblminutiuscita)

                                        .addComponent(lblorauscita))

                                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)

                                        .addGroup(layout.createSequentialGroup()

                                            .addGap(5, 5, 5)

                                            .addComponent(txtorauscita, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE))

                                        .addGroup(layout.createSequentialGroup()

                                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

                                            .addComponent(txtminutiuscita)))

                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

                                    .addComponent(selezionaVeicolo, javax.swing.GroupLayout.PREFERRED_SIZE, 275, javax.swing.GroupLayout.PREFERRED_SIZE))

                                .addComponent(esceVeicolo, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 399, javax.swing.GroupLayout.PREFERRED_SIZE))

                            .addGroup(layout.createSequentialGroup()

                                .addComponent(lblgiornouscita)

                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

                                .addComponent(txtgiornouscita, javax.swing.GroupLayout.PREFERRED_SIZE, 30, javax.swing.GroupLayout.PREFERRED_SIZE)

                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

                                .addComponent(lblmeseuscita)

                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

                                .addComponent(txtmeseuscita, javax.swing.GroupLayout.PREFERRED_SIZE, 37, javax.swing.GroupLayout.PREFERRED_SIZE)

                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

                                .addComponent(lblannouscita)

                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

                                .addComponent(txtannouscita, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE))

                            .addComponent(txtposti, javax.swing.GroupLayout.PREFERRED_SIZE, 394, javax.swing.GroupLayout.PREFERRED_SIZE)

                            .addGroup(layout.createSequentialGroup()

                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

                                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()

                                        .addComponent(lbloraentrata, javax.swing.GroupLayout.PREFERRED_SIZE, 106, javax.swing.GroupLayout.PREFERRED_SIZE)

                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED))

                                    .addGroup(layout.createSequentialGroup()

                                        .addComponent(lblminutientrata, javax.swing.GroupLayout.PREFERRED_SIZE, 104, javax.swing.GroupLayout.PREFERRED_SIZE)

                                        .addGap(6, 6, 6)))

                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)

                                    .addComponent(txtminutientrata)

                                    .addComponent(txtoraentrata, javax.swing.GroupLayout.DEFAULT_SIZE, 33, Short.MAX_VALUE))

                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)

                                    .addGroup(layout.createSequentialGroup()

                                        .addComponent(lbltarga, javax.swing.GroupLayout.PREFERRED_SIZE, 51, javax.swing.GroupLayout.PREFERRED_SIZE)

                                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

                                        .addComponent(txttarga, javax.swing.GroupLayout.PREFERRED_SIZE, 164, javax.swing.GroupLayout.PREFERRED_SIZE))

                                    .addComponent(selezionaTipo, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))

                            .addGroup(layout.createSequentialGroup()

                                .addComponent(lblgiornoentrata)

                                .addGap(18, 18, 18)

                                .addComponent(txtgiornoentrata, javax.swing.GroupLayout.PREFERRED_SIZE, 31, javax.swing.GroupLayout.PREFERRED_SIZE)

                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

                                .addComponent(lblmeseentrata)

                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

                                .addComponent(txtmeseentrata, javax.swing.GroupLayout.PREFERRED_SIZE, 41, javax.swing.GroupLayout.PREFERRED_SIZE)

                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

                                .addComponent(lblannoentrata)

                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

                                .addComponent(txtannoentrata, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE)))

                        .addGap(0, 0, Short.MAX_VALUE)))

                .addContainerGap())

        );

        layout.setVerticalGroup(

            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()

                .addContainerGap()

                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

                    .addGroup(layout.createSequentialGroup()

                        .addComponent(orologio, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE)

                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

                        .addComponent(jScrollPane3, javax.swing.GroupLayout.PREFERRED_SIZE, 72, javax.swing.GroupLayout.PREFERRED_SIZE)

                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

                        .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 109, javax.swing.GroupLayout.PREFERRED_SIZE))

                    .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 236, javax.swing.GroupLayout.PREFERRED_SIZE))

                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)

                    .addGroup(layout.createSequentialGroup()

                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

                            .addComponent(lbltarga)

                            .addComponent(txttarga, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))

                        .addGap(3, 3, 3))

                    .addGroup(layout.createSequentialGroup()

                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

                            .addComponent(lblgiornoentrata)

                            .addComponent(txtgiornoentrata, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

                            .addComponent(lblmeseentrata)

                            .addComponent(txtmeseentrata, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

                            .addComponent(lblannoentrata)

                            .addComponent(txtannoentrata, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))

                        .addGap(11, 11, 11)

                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

                            .addComponent(lbloraentrata, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE)

                            .addComponent(txtoraentrata, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))

                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)))

                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

                    .addComponent(selezionaTipo, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 21, javax.swing.GroupLayout.PREFERRED_SIZE)

                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

                        .addComponent(lblminutientrata, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

                        .addComponent(txtminutientrata, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))

                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

                .addComponent(entraVeicolo)

                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)

                    .addGroup(layout.createSequentialGroup()

                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)

                            .addGroup(layout.createSequentialGroup()

                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

                                    .addComponent(acetta5cent)

                                    .addComponent(acetta50cent)

                                    .addComponent(acetta5euro)

                                    .addComponent(acetta50euro))

                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

                                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

                                    .addComponent(acetta2cent)

                                    .addComponent(acetta20cent)

                                    .addComponent(acetta2euro)

                                    .addComponent(acetta20euro)))

                            .addComponent(acetta500euro, javax.swing.GroupLayout.PREFERRED_SIZE, 55, javax.swing.GroupLayout.PREFERRED_SIZE))

                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

                            .addComponent(acetta1cent)

                            .addComponent(acetta10cent)

                            .addComponent(acetta1euro)

                            .addComponent(acetta10euro)

                            .addComponent(acetta100euro)))

                    .addComponent(txtcredito))

                .addGap(13, 13, 13)

                .addComponent(txtposti, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

                .addGap(18, 18, 18)

                .addComponent(esceVeicolo)

                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

                    .addComponent(lblgiornouscita)

                    .addComponent(txtgiornouscita, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

                    .addComponent(lblmeseuscita)

                    .addComponent(lblannouscita)

                    .addComponent(txtmeseuscita, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

                    .addComponent(txtannouscita, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))

                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)

                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

                    .addComponent(selezionaVeicolo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

                    .addComponent(txtorauscita, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

                    .addComponent(lblorauscita))

                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)

                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)

                    .addComponent(txtminutiuscita, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)

                    .addComponent(lblminutiuscita))

                .addGap(567, 567, 567))

        );


        pack();

    }// </editor-fold>                       


    private void esceVeicoloActionPerformed(java.awt.event.ActionEvent evt) {                                           

        if (p.getAperto().equals("siamo aperti")) {

            inizializzaUscita();

            if (p.esceVeicolo(giornouscita, meseuscita, annouscita, orauscita, minutiuscita, selezionaTipo, selezionaVeicolo).equalsIgnoreCase("")) {

                txtscontrino.setText("");

                txtposti.setText("posti liberi:" + "\t" + postiliberi + "\t" + "posti occupati:" + "\t" + postioccupati);


            } else {

                numeroscontrino++;

                String numeroScontrino = "scontrino n°" + "\t" + numeroscontrino;

                String Scontrino = numeroScontrino + "\n" + p.esceVeicolo(giornouscita, meseuscita, annouscita, orauscita, minutiuscita, selezionaTipo, selezionaVeicolo);


                try {

                    FileWriter w = new FileWriter("scontrino.txt");

                    BufferedWriter b = new BufferedWriter(w);

                    b.write(Scontrino + "\n");

                    b.flush();

                    b.close();


                } catch (IOException ex) {

                    Logger.getLogger(Interfaccia.class.getName()).log(Level.SEVERE, null, ex);

                }

                postiliberi++;

                postioccupati--;

                txtposti.setText("posti liberi:" + "\t" + postiliberi + "\t" + "posti occupati:" + "\t" + postioccupati);

                txtscontrino.setText(Scontrino);

                p.credito = 0.0;

                txtcredito.setText("");

                txtorauscita.setText("");

                txtminutiuscita.setText("");

                txttarga.setText("");

                txtorauscita.grabFocus();

                txtminutiuscita.grabFocus();

                txttarga.grabFocus();

                if (postioccupati == 0) {

                    selezionaVeicolo.removeAllItems();

                }


            }


        } else {

            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);

            txtorauscita.setText("");

            txtminutiuscita.setText("");

            txttarga.setText("");

            txtorauscita.grabFocus();

            txtminutiuscita.grabFocus();

            txttarga.grabFocus();

            txtposti.setText("");

            txtscontrino.setText("");

        }

    }                                           


    private void acetta50euroActionPerformed(java.awt.event.ActionEvent evt) {                                             

        if (p.getAperto().equals("siamo aperti")) {

            txtcredito.setText(p.acettaCiquanta("50.0"));


        } else {

            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);

            txtcredito.setText("");

        }

    }                                           


    private void acetta100euroActionPerformed(java.awt.event.ActionEvent evt) {                                             

        if (p.getAperto().equals("siamo aperti")) {

            txtcredito.setText(p.acettaCento("100.0"));


        } else {

            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);

            txtcredito.setText("");

        }

    }                                             


    private void acetta500euroActionPerformed(java.awt.event.ActionEvent evt) {                                             

        if (p.getAperto().equals("siamo aperti")) {

            txtcredito.setText(p.acettaCinquecento("500.0"));


        } else {

            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);

            txtcredito.setText("");

        }

    }                                             


    private void acetta10centActionPerformed(java.awt.event.ActionEvent evt) {                                             

        if (p.getAperto().equals("siamo aperti")) {

            txtcredito.setText(p.acetta10cent("0.1"));


        } else {

            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);

            txtcredito.setText("");

        }


    }                                           


    private void acetta2centActionPerformed(java.awt.event.ActionEvent evt) {                                           


        if (p.getAperto().equals("siamo aperti")) {

            txtcredito.setText(p.acetta2cent("0.02"));


        } else {

            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);

            txtcredito.setText("");

        }

    }                                           


    private void acetta20centActionPerformed(java.awt.event.ActionEvent evt) {                                             

        if (p.getAperto().equals("siamo aperti")) {

            txtcredito.setText(p.acetta20cent("0.2"));


        } else {

            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);

            txtcredito.setText("");

        }

    }                                           


    private void acetta1centActionPerformed(java.awt.event.ActionEvent evt) {                                           


        if (p.getAperto().equals("siamo aperti")) {

            txtcredito.setText(p.acetta1cent("0.01"));


        } else {

            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);

            txtcredito.setText("");

        }

    }                                           


    private void acetta50centActionPerformed(java.awt.event.ActionEvent evt) {                                             


        if (p.getAperto().equals("siamo aperti")) {

            txtcredito.setText(p.acetta50cent("0.5"));


        } else {

            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);

            txtcredito.setText("");

        }

    }                                           


    private void acetta5centActionPerformed(java.awt.event.ActionEvent evt) {                                           


        if (p.getAperto().equals("siamo aperti")) {

            txtcredito.setText(p.acetta5cent("0.05"));


        } else {

            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);

            txtcredito.setText("");

        }

    }                                           


    private void acetta1euroActionPerformed(java.awt.event.ActionEvent evt) {                                           

        if (p.getAperto().equals("siamo aperti")) {

            txtcredito.setText(p.acettaUno("1.0"));


        } else {

            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);

            txtcredito.setText("");

        }

    }                                           


    private void acetta2euroActionPerformed(java.awt.event.ActionEvent evt) {                                           

        if (p.getAperto().equals("siamo aperti")) {

            txtcredito.setText(p.acettaDue("2.0"));


        } else {

            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);

            txtcredito.setText("");

        }

    }                                           


    private void acetta5euroActionPerformed(java.awt.event.ActionEvent evt) {                                           

        if (p.getAperto().equals("siamo aperti")) {

            txtcredito.setText(p.acettaCinque("5.0"));


        } else {

            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);

            txtcredito.setText("");

        }

    }                                           


    private void acetta10euroActionPerformed(java.awt.event.ActionEvent evt) {                                             

        if (p.getAperto().equals("siamo aperti")) {

            txtcredito.setText(p.acettaDieci("10.0"));


        } else {

            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);

            txtcredito.setText("");

        }

    }                                           


    private void entraVeicoloActionPerformed(java.awt.event.ActionEvent evt) {                                             

        if (p.getAperto().equals("siamo aperti")) {

            inizializzaEntrata();

            LocalTime time = LocalTime.of(oraentrata, minutientrata);

            LocalDate dataentrata = LocalDate.of(annoentrata, meseentrata, giornoentrata);

            String orarioentrata = time.toString();

            String stampadataentrata = dataentrata.format(dtf);

            if (oraentrata < 0 || oraentrata > 24 || minutientrata < 0 || minutientrata > 60) {

                selezionaVeicolo.removeItem(targa + "\n" + tipo + "\n" + stampadataentrata + "\n" + orarioentrata);

                txtticket.setText("");

                txtoraentrata.setText("");

                txtminutientrata.setText("");

                txtoraentrata.grabFocus();

                txtminutientrata.grabFocus();

            } else if (txttarga.getText().isEmpty()) {

                JOptionPane.showMessageDialog(null, "inserisci la targa!", " Errore", JOptionPane.ERROR_MESSAGE);

                selezionaVeicolo.removeItem(targa + "\n" + tipo + "\n" + stampadataentrata + "\n" + orarioentrata);

                txtticket.setText("");

                txttarga.grabFocus();

            } else {

                tipo = selezionaTipo.getSelectedItem().toString();

                p.entraVeicolo(targa, tipo, oraentrata, minutientrata, giornoentrata, meseentrata, annoentrata);

                selezionaVeicolo.addItem(targa + "\n" + tipo + "\n" + stampadataentrata + "\n" + orarioentrata);

                try {

                    FileWriter w = new FileWriter("ticket.txt");

                    BufferedWriter b = new BufferedWriter(w);

                    b.write(p.Ticket());

                    b.flush();

                    b.close();


                } catch (IOException ex) {

                    Logger.getLogger(Interfaccia.class.getName()).log(Level.SEVERE, null, ex);

                }

                txtticket.setText(p.Ticket());

                postiliberi--;

                postioccupati++;

                if (postioccupati == p.massimoveicoli) {

                    txtposti.setText("posti esauriti");

                } else {

                    txtposti.setText("posti liberi:" + "\t" + postiliberi + "\t" + "posti occupati:" + "\t" + postioccupati);

                }

                txtoraentrata.setText("");

                txtminutientrata.setText("");

                txttarga.setText("");

                txtoraentrata.grabFocus();

                txtminutientrata.grabFocus();

                txttarga.grabFocus();

            }


        } else {

            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);

            txtoraentrata.setText("");

            txtminutientrata.setText("");

            txttarga.setText("");

            txtoraentrata.grabFocus();

            txtminutientrata.grabFocus();

            txttarga.grabFocus();

            txtposti.setText("");

        }

    }                                           


    private void acetta20euroActionPerformed(java.awt.event.ActionEvent evt) {                                             

        if (p.getAperto().equals("siamo aperti")) {

            txtcredito.setText(p.acettaVenti("20.0"));


        } else {

            JOptionPane.showMessageDialog(null, "non puoi inserire dati", " Errore", JOptionPane.ERROR_MESSAGE);

            txtcredito.setText("");

        }

    }                                           



    // Variables declaration - do not modify                     

    private javax.swing.JButton acetta100euro;

    private javax.swing.JButton acetta10cent;

    private javax.swing.JButton acetta10euro;

    private javax.swing.JButton acetta1cent;

    private javax.swing.JButton acetta1euro;

    private javax.swing.JButton acetta20cent;

    private javax.swing.JButton acetta20euro;

    private javax.swing.JButton acetta2cent;

    private javax.swing.JButton acetta2euro;

    private javax.swing.JButton acetta500euro;

    private javax.swing.JButton acetta50cent;

    private javax.swing.JButton acetta50euro;

    private javax.swing.JButton acetta5cent;

    private javax.swing.JButton acetta5euro;

    private javax.swing.JTextArea display;

    private javax.swing.JButton entraVeicolo;

    private javax.swing.JButton esceVeicolo;

    private javax.swing.JScrollPane jScrollPane1;

    private javax.swing.JScrollPane jScrollPane2;

    private javax.swing.JScrollPane jScrollPane3;

    private javax.swing.JLabel lblannoentrata;

    private javax.swing.JLabel lblannouscita;

    private javax.swing.JLabel lblgiornoentrata;

    private javax.swing.JLabel lblgiornouscita;

    private javax.swing.JLabel lblmeseentrata;

    private javax.swing.JLabel lblmeseuscita;

    private javax.swing.JLabel lblminutientrata;

    private javax.swing.JLabel lblminutiuscita;

    private javax.swing.JLabel lbloraentrata;

    private javax.swing.JLabel lblorauscita;

    private javax.swing.JLabel lbltarga;

    private javax.swing.JLabel orologio;

    private javax.swing.JComboBox<String> selezionaTipo;

    private javax.swing.JComboBox selezionaVeicolo;

    private javax.swing.JTextField txtannoentrata;

    private javax.swing.JTextField txtannouscita;

    private javax.swing.JTextField txtcredito;

    private javax.swing.JTextField txtgiornoentrata;

    private javax.swing.JTextField txtgiornouscita;

    private javax.swing.JTextField txtmeseentrata;

    private javax.swing.JTextField txtmeseuscita;

    private javax.swing.JTextField txtminutientrata;

    private javax.swing.JTextField txtminutiuscita;

    private javax.swing.JTextField txtoraentrata;

    private javax.swing.JTextField txtorauscita;

    private javax.swing.JTextField txtposti;

    private javax.swing.JTextArea txtscontrino;

    private javax.swing.JTextField txttarga;

    private javax.swing.JTextArea txtticket;

    // End of variables declaration                   

public void inizializzaEntrata() {

        if (txtgiornoentrata.getText().isEmpty() && txtmeseentrata.getText().isEmpty() && txtannoentrata.getText().isEmpty() && txtminutientrata.getText().isEmpty() && txtoraentrata.getText().isEmpty() && txttarga.getText().isEmpty()) {

            JOptionPane.showMessageDialog(null, "inserisci il valore richiesto!", " Errore", JOptionPane.ERROR_MESSAGE);

            txtoraentrata.setText("");

            txtminutientrata.setText("");

            txttarga.setText("");

            txtoraentrata.grabFocus();

            txtminutientrata.grabFocus();

            txttarga.grabFocus();

            txtticket.setText("");

        } else {

            try {

                oraentrata = new Integer(txtoraentrata.getText());

                minutientrata = new Integer(txtminutientrata.getText());

                giornoentrata = new Integer(txtgiornoentrata.getText());

                meseentrata = new Integer(txtmeseentrata.getText());

                annoentrata = new Integer(txtannoentrata.getText());

            } catch (Exception e) {

                JOptionPane.showMessageDialog(null, "inserisci solo valori numerici", " Errore", JOptionPane.ERROR_MESSAGE);

                txtoraentrata.setText("");

                txtminutientrata.setText("");

                txtoraentrata.grabFocus();

                txtminutientrata.grabFocus();

                txtticket.setText("");

                txtmeseentrata.setText("");

                txtmeseentrata.grabFocus();

                txtgiornoentrata.setText("");

                txtgiornoentrata.grabFocus();

                txtannoentrata.setText("");

                txtannoentrata.grabFocus();

            }

            try {

                oraentrata = new Integer(txtoraentrata.getText());

                minutientrata = new Integer(txtminutientrata.getText());

                giornoentrata = new Integer(txtgiornoentrata.getText());

                meseentrata = new Integer(txtmeseentrata.getText());

                annoentrata = new Integer(txtannoentrata.getText());


            } catch (NumberFormatException e) {

                JOptionPane.showMessageDialog(null, "inserisci solo valori numerici interi!", " Errore", JOptionPane.ERROR_MESSAGE);

                txtoraentrata.setText("");

                txtoraentrata.grabFocus();

                txtminutientrata.setText("");

                txtminutientrata.grabFocus();

                txtticket.setText("");

                txtmeseentrata.setText("");

                txtmeseentrata.grabFocus();

                txtgiornoentrata.setText("");

                txtgiornoentrata.grabFocus();

                txtannoentrata.setText("");

                txtannoentrata.grabFocus();


            }

            if (oraentrata < 0 || oraentrata >= 24) {

                JOptionPane.showMessageDialog(null, "inserisci solo valori numerici positivi e minori di 24!", " Errore", JOptionPane.ERROR_MESSAGE);

                txtoraentrata.setText("");

                txtoraentrata.grabFocus();

                txtticket.setText("");


            }

            if (minutientrata < 0 || minutientrata >= 60) {

                JOptionPane.showMessageDialog(null, "inserisci solo valori numerici positivi  e minori di 60!", " Errore", JOptionPane.ERROR_MESSAGE);

                txtminutientrata.setText("");

                txtminutientrata.grabFocus();

                txtticket.setText("");


            }

            if (annoentrata < 0 || meseentrata < 0 || giornoentrata < 1) {

                JOptionPane.showMessageDialog(null, "inserisci solo valori positivi!", " Errore", JOptionPane.ERROR_MESSAGE);

                txtmeseentrata.setText("");

                txtmeseentrata.grabFocus();

                txtgiornoentrata.setText("");

                txtgiornoentrata.grabFocus();

                txtannoentrata.setText("");

                txtannoentrata.grabFocus();


            } else{

                if ((meseentrata == 1) || (meseentrata == 3) || (meseentrata == 5) ||(meseentrata == 7) || (meseentrata == 8)|| (meseentrata == 10) || (meseentrata == 12)) {


                if (giornoentrata > 31) {

                    JOptionPane.showMessageDialog(null, "inserisci solo valori minori di 31", " Errore", JOptionPane.ERROR_MESSAGE);

                    txtgiornoentrata.setText("");

                    txtgiornoentrata.grabFocus();

                }

            } else if (meseentrata == 2) {


                if (giornoentrata > 29) {

                    JOptionPane.showMessageDialog(null, "inserisci solo valori minori di 29", " Errore", JOptionPane.ERROR_MESSAGE);

                    txtgiornoentrata.setText("");

                    txtgiornoentrata.grabFocus();

                }


            } else if (giornoentrata > 30) {

                JOptionPane.showMessageDialog(null, "inserisci solo valori minori di 30", " Errore", JOptionPane.ERROR_MESSAGE);

                txtgiornoentrata.setText("");

                txtgiornoentrata.grabFocus();

            }

            }

          


            targa = txttarga.getText();


        }


    }


    public void inizializzaUscita() {

        if (txtgiornouscita.getText().isEmpty() && txtmeseuscita.getText().isEmpty() && txtannouscita.getText().isEmpty() && txtminutiuscita.getText().isEmpty() && txtorauscita.getText().isEmpty()) {

            JOptionPane.showMessageDialog(null, "inserisci il valore richiesto!", " Errore", JOptionPane.ERROR_MESSAGE);

            txtorauscita.setText("");

            txtminutiuscita.setText("");

            txtorauscita.grabFocus();

            txtminutiuscita.grabFocus();

            txtscontrino.setText("");

            txtgiornouscita.setText("");

            txtmeseuscita.setText("");

            txtannouscita.setText("");

            txtgiornouscita.grabFocus();

            txtmeseuscita.grabFocus();

            txtannouscita.grabFocus();


        } else {

            try {

                orauscita = new Integer(txtorauscita.getText());

                minutiuscita = new Integer(txtminutiuscita.getText());

                giornouscita = new Integer(txtgiornouscita.getText());

                meseuscita = new Integer(txtmeseuscita.getText());

                annouscita = new Integer(txtannouscita.getText());


            } catch (Exception e) {

                JOptionPane.showMessageDialog(null, "inserisci solo valori numerici", " Errore", JOptionPane.ERROR_MESSAGE);

                txtorauscita.setText("");

                txtminutiuscita.setText("");

                txtorauscita.grabFocus();

                txtminutiuscita.grabFocus();

                txtscontrino.setText("");

                txtgiornouscita.setText("");

                txtmeseuscita.setText("");

                txtannouscita.setText("");

                txtgiornouscita.grabFocus();

                txtmeseuscita.grabFocus();

                txtannouscita.grabFocus();

            }

            try {

                orauscita = new Integer(txtorauscita.getText());

                minutiuscita = new Integer(txtminutiuscita.getText());

                giornouscita = new Integer(txtgiornouscita.getText());

                meseuscita = new Integer(txtmeseuscita.getText());

                annouscita = new Integer(txtannouscita.getText());


            } catch (NumberFormatException e) {

                JOptionPane.showMessageDialog(null, "inserisci solo valori numerici interi!", " Errore", JOptionPane.ERROR_MESSAGE);

                txtorauscita.setText("");

                txtminutiuscita.setText("");

                txtorauscita.grabFocus();

                txtminutiuscita.grabFocus();

                txtscontrino.setText("");

                txtgiornouscita.setText("");

                txtmeseuscita.setText("");

                txtannouscita.setText("");

                txtgiornouscita.grabFocus();

                txtmeseuscita.grabFocus();

                txtannouscita.grabFocus();


            }


            if (orauscita >= 24 || orauscita < 0) {

                JOptionPane.showMessageDialog(null, "inserisci solo minori di 24 e maggiori di 0", " Errore", JOptionPane.ERROR_MESSAGE);

                txtorauscita.setText("");

                txtorauscita.grabFocus();

                txtscontrino.setText("");

            }


            if (minutiuscita >= 60 || minutiuscita < 0) {

                JOptionPane.showMessageDialog(null, "inserisci solo minori di 60 e maggiori di o!", " Errore", JOptionPane.ERROR_MESSAGE);

                txtminutiuscita.setText("");

                txtminutiuscita.grabFocus();

                txtscontrino.setText("");

            }

            

            if (annouscita < 0 || meseuscita < 0 || giornouscita < 1) {

                JOptionPane.showMessageDialog(null, "inserisci solo valori positivi!", " Errore", JOptionPane.ERROR_MESSAGE);

                txtmeseuscita.setText("");

                txtmeseuscita.grabFocus();

                txtgiornouscita.setText("");

                txtgiornouscita.grabFocus();

                txtannouscita.setText("");

                txtannouscita.grabFocus();

            } else{

                if ((meseuscita == 1) || (meseuscita == 3 ) || (meseuscita == 5) || (meseuscita == 7) || (meseuscita == 8) || (meseuscita == 10) || (meseuscita == 12) ){

                if (giornouscita > 31) {

                    JOptionPane.showMessageDialog(null, "inserisci solo valori minori di 31", " Errore", JOptionPane.ERROR_MESSAGE);

                    txtgiornouscita.setText("");

                    txtgiornouscita.grabFocus();

                }

            } else if (meseuscita == 2) {

                if (giornouscita > 29) {

                    JOptionPane.showMessageDialog(null, "inserisci solo valori minori di 29", " Errore", JOptionPane.ERROR_MESSAGE);

                    txtgiornouscita.setText("");

                    txtgiornouscita.grabFocus();

                }

            } else if (giornouscita > 30) {

                JOptionPane.showMessageDialog(null, "inserisci solo valori minori di 30", " Errore", JOptionPane.ERROR_MESSAGE);

                txtgiornouscita.setText("");

                txtgiornouscita.grabFocus();

            }

            }

            

        }


    }


}

il resto del codice non cambia( classe main e orologio non penso ti servono tanto non lo toccate).


lo screen dell'interfaccia grafica:
interfaccia grafica.jpg


potenziamenti:


1) ho messo tutti i tagli esistenti


2) la possibilità di scelgliere il tipo di veicolo(in base al tipo di veicolo cambiano le tariffe).


3) le date volevo fare delle tariffe di abbonamenti mensili e annuali e perchè no settimanali ma prima deve fare bene i calcoli.
 
e ci sono anche dei pontenziamenti vari su alcuni controlli più per rendere più preciso il parcheggio. tra cui il parcheggio sotto i 20 minuti che se non è pagato è annulato altrimenti è rimborsato.

qua sotto invece c'è il codice del pagamento settimanale che ho appena fatto:

Java:
 if(giornipassati==7|| giornipassati==14 || giornipassati==21 || giornipassati==28){
                            prezzo=settimanale;
                        }else{
                            prezzo = (giornipassati * giornaliero) + orario;
                        }