Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    [JAVA] fa quello che vuole!!!!

    Allora mi sto ad imbufalire!!
    Io prenlo una lista di key da un hashtable, e la confronto con yna key che gli passo io (nella fattispecie le chiavi anno la forma: gg/mm/aaaa hh:mm)
    E verficio che non ne esista ga una inserita... ma a quanto pare continua a dirmi che la data e gia presente!! anche se sono differenti!!!!
    Questo e l'output della sysout (*)
    codice:
    gc1:1130263320874 gc2:1130263320874
    gc1:1130263320875 gc2:1130263320875
    gc1:1130263320877 gc2:1130263320877
    gc1:1130263320885 gc2:1130263320885
    oltretutto continua ad incrementarsi!!!!

    codice:
    		Enumeration keys = listaTurni.keys();
    		GregorianCalendar gc1=null;
    		GregorianCalendar gc2=null;
    		try {
    			gc1 = Data.parseDate(key);
    		} catch (Exception e2) {
    			
    			e2.printStackTrace();
    		}
    		while(keys.hasMoreElements()) {
    			
    			try {
    
    				gc2 = Data.parseDate((String)keys.nextElement());
    			} catch (Exception e1) {
    				e1.printStackTrace();
    			}
    			
    
    			if (gc1.getTime().compareTo(gc2.getTime())==0) {
    			System.out.println("gc1:"+gc1.getTimeInMillis()+" gc2:"+gc2.getTimeInMillis()); (*)
    			//System.out.println("Chiave 1:"+Data.formattaData(gc1)+" Chiave 2: "+Data.formattaData(gc2));
    			throw new TurnoEsistenteException();
    			}
    			 
    		}

  2. #2
    Che strano...

    Hai risolto?!?

  3. #3
    Ho solo scoperto, che e' questo file a fare puttanate!!
    Non so per quale motivo funziona in modo incrementale!
    lo chiamo la prima e si esegue 1 volta.
    lo chiamo la seconda e si esegue 2 volte.
    lo chiamo la terza e si esegue 4 volte!! :di56: :di56:

    Non so xke.... :zamm:
    Oramia l'ho piallato via... adesso lo riscrivo da zero e speriamo bene!

  4. #4
    Se vuoi provare a postare anche il codice che chiama questo metodo potremmo provare a capirne di +.

  5. #5
    sono 1000 righe circa :gren:

    Vabbe' ora lo riscrivo tutto e dopo se funziona :sgrat: faccio un diff e vediamo cos poteva essere!!!

    bye

  6. #6
    Allora ho scoperto che non e' la funzione Add che ri ripete... ma e l'actionperformed che funziona in modo incrementale.

    Ora mi chiedo, dal momento che ho 5 classi con almeno 5 actionperform a testa... nessuno fa sto proble... xke sta putt.. di classe lo deve fare :di56: :di56:

  7. #7

    ecco il codice:

    package gui;
    import Session;
    import Tornei;
    import PartitaMultiPlayer;
    import Turni;
    import Arena;
    import javax.swing.*;
    import javax.swing.event.ListSelectionEvent;
    import javax.swing.event.ListSelectionListener;

    import Exception.Arena.ChiaveErrataException;
    import Exception.Arena.InvalidRangeException;
    import Exception.Arena.NotFoundTorneoException;
    import Exception.Arena.TurnoEsistenteException;

    import java.awt.*;
    import java.awt.event.*;
    import java.util.Enumeration;
    import java.util.GregorianCalendar;

    public class UIDate extends JInternalFrame {
    private Session sessione;
    private JInternalFrame thisFrame = this;

    //Pannelli
    private JPanel pnlTitolo = new JPanel();
    private JPanel pnlCorpo = new JPanel();

    //Componenti tabella
    private DefaultListModel lstModelTornei = new DefaultListModel();
    private JList lstTornei = new JList(lstModelTornei);

    private DefaultListModel lstModelTurni = new DefaultListModel();
    private JList lstTurni = new JList(lstModelTurni);

    private JLabel lblTitolo = new JLabel("Gestione date"),
    lblLista1 = new JLabel("Lista tornei"),
    lblLista2 = new JLabel("Lista turni"),
    lblData = new JLabel("Data di svolgimento");

    private JTextField fldData = new JTextField(25);

    private JButton btnSalva = new JButton("Salva"),
    btnPartecipanti = new JButton("Visualizza Partecipanti");

    public UIDate(Session sessione) {
    super("Gestione date", true, true, false, false);

    this.sessione = sessione;

    if (sessione.getServer().getNumeroTornei() == 0) {
    JOptionPane.showMessageDialog(
    thisFrame,
    "Non e' stato definito nessun torneo",
    "Avviso",
    JOptionPane.INFORMATION_MESSAGE);
    this.dispose();
    return;
    }

    //Setup Frame
    this.setDefaultCloseOperation(JInternalFrame.DISPO SE_ON_CLOSE);
    this.setLocation(50, 50);
    Container cp = this.getContentPane();
    cp.setLayout(new BorderLayout());

    //Setup pannello titolo
    lblTitolo.setFont(new Font("Arial", 1, 24));
    lblTitolo.setAlignmentX(JLabel.CENTER_ALIGNMENT);
    pnlTitolo.setLayout(new FlowLayout());
    pnlTitolo.add(lblTitolo);

    //SetUp corpo
    pnlCorpo.setLayout(new GridBagLayout());
    GridBagConstraints layout = new GridBagConstraints();
    layout.gridx = 0;
    layout.gridy = 0;
    pnlCorpo.add(lblLista1, layout);

    layout = new GridBagConstraints();
    layout.gridx = 1;
    layout.gridy = 0;
    pnlCorpo.add(lblLista2, layout);

    layout = new GridBagConstraints();
    layout.gridx = 2;
    layout.gridy = 0;
    layout.gridwidth = 2;
    pnlCorpo.add(lblData, layout);

    layout = new GridBagConstraints();
    layout.gridx = 0;
    layout.gridy = 1;
    layout.gridheight = 3;
    layout.fill = GridBagConstraints.BOTH;
    pnlCorpo.add(new JScrollPane(lstTornei), layout);

    layout = new GridBagConstraints();
    layout.gridx = 1;
    layout.gridy = 1;
    layout.gridheight = 3;
    layout.fill = GridBagConstraints.BOTH;
    pnlCorpo.add(new JScrollPane(lstTurni), layout);

    layout = new GridBagConstraints();
    layout.gridx = 2;
    layout.gridy = 1;
    layout.fill = GridBagConstraints.BOTH;
    pnlCorpo.add(fldData, layout);

    layout = new GridBagConstraints();
    layout.gridx = 2;
    layout.gridy = 2;
    pnlCorpo.add(btnSalva, layout);

    layout = new GridBagConstraints();
    layout.gridx = 2;
    layout.gridy = 3;
    layout.gridwidth = 2;
    pnlCorpo.add(btnPartecipanti, layout);

    //Riempimento lista tornei
    for (int i = 0; i < sessione.getServer().getNumeroTornei(); i++) {
    try {

    if (!(sessione.getServer().getTorneo(i).getTipoTorneo ()
    == Tornei.TORNEO_SINGOLO))
    lstModelTornei.add(
    lstTornei.getModel().getSize(),
    (sessione.getServer().getTorneo(i)).getNomeGioco() );
    } catch (InvalidRangeException e) {
    e.printStackTrace();
    }
    }

    lstTornei.addListSelectionListener(new cmdSelezionaTornei());

    //Disattiva campi
    btnSalva.setEnabled(false);
    btnPartecipanti.setEnabled(false);
    lblData.setEnabled(false);
    fldData.setEditable(false);

    //Add finale form
    cp.add(pnlTitolo, BorderLayout.NORTH);
    cp.add(pnlCorpo, BorderLayout.CENTER);

    pack();
    show();

    }

    private class cmdSelezionaTornei implements ListSelectionListener {

    public void valueChanged(ListSelectionEvent e) {
    //Cancella tutti gli elementi
    lstModelTurni.removeAllElements();

    //Get del torneo
    Tornei torneo = null;
    try {
    torneo =
    sessione.getServer().getTorneo(
    (String) lstTornei.getSelectedValue());
    } catch (NotFoundTorneoException e1) {
    JOptionPane.showMessageDialog(
    thisFrame,
    "Torneo Inesistente",
    "Errore",
    2);
    return;
    }

    if (!e.getValueIsAdjusting()) {

    //Verifica che sia scaduta l'iscrizione
    if (torneo.getDataScadenzaIscrizione().getTimeInMilli s() > (new GregorianCalendar()).getTimeInMillis())

    {
    JOptionPane.showMessageDialog(
    thisFrame,
    "Finche le iscrizioni non sono chiuse non puo definire le date di gioco: \n\nLe iscrizioni scadono: "
    + utils.Data.formattaData(
    torneo.getDataScadenzaIscrizione()),
    "Avviso",
    JOptionPane.INFORMATION_MESSAGE);
    thisFrame.setTitle("Gestione date");
    return;
    }

    thisFrame.setTitle("Gestione date: " + torneo.getNomeGioco());

    //Tipo di torneo
    if (torneo.getTipoTorneo() == Tornei.TORNEO_ITALIANO) {
    //TORNEO DI TIPO ITALIANO
    int numTeams = torneo.getNumeroGiocatori();

    //Verifica condizioni sul numero di partecipanti
    if (numTeams % 2 != 0
    || numTeams == 0
    || numTeams < torneo.getUtentiMin()) {
    JOptionPane.showMessageDialog(
    thisFrame,
    "Il numero di partecipanti e dispari o zero oppure minore del minimo scelto",
    "Errore",
    2);

    int confirm;
    confirm =
    JOptionPane.showConfirmDialog(
    thisFrame,
    "Vuoi prolungare la data di iscrizione? Oppure Eliminare il torneo?\n"
    + "YES = Prolunga\n"
    + "NO = Lascia inalterato\n"
    + "CANCEL = Cancella il torneo",
    "Cosa vuoi fare?",
    JOptionPane.YES_NO_CANCEL_OPTION);

    if (confirm == JOptionPane.NO_OPTION) {
    return;
    } else if (confirm == JOptionPane.YES_OPTION) {
    boolean dataOk = false;
    GregorianCalendar d = null;
    while (!dataOk) {

    String newData =
    JOptionPane.showInputDialog(
    thisFrame,
    "Inserisci la nuova data (gg/mm/aaaa hh:mm)",
    "Nuova data");
    if (newData == "" || newData == null) {
    dataOk = false;
    continue;
    }

    try {
    d = utils.Data.parseDate(newData);
    } catch (Exception e1) {
    JOptionPane.showMessageDialog(
    thisFrame,
    "Data errata!",
    "Avviso",
    2);
    dataOk = false;
    continue;
    }
    //Verifica che la data non sia dopo la fine del torneo
    if (d.after(torneo.getDataScadenzaTorneo())) {
    JOptionPane.showMessageDialog(
    thisFrame,
    "Data fine iscrizione dopo scadenza torneo",
    "Errore",
    2);
    dataOk=false;
    } else
    dataOk = true;
    }



    //SETTA NUOVA DATA

    torneo.setDataScadenzaIscrizione(d);

    } else {
    //ELIMINA TORNEO
    try {
    sessione.getServer().removeTorneo(
    torneo.getNomeGioco());
    } catch (NotFoundTorneoException e1) {
    JOptionPane.showMessageDialog(
    thisFrame,
    "Torneo Inesistente",
    "Errore",
    2);
    return;

    }
    }
    return;
    } //END IF NUMERO DI PARTECIPANTI

    //Creazione lista turni e partecipati
    //int[][][] giornate = Arena.calcoloGiornate(numTeams);

    if (torneo.getNumeroTurni() == 0) {
    for (int i = 0; i < numTeams - 1; i++) {
    lstModelTurni.add(
    lstTurni.getModel().getSize(),
    ("Turno #" + (i + 1) + " [da definire]"));
    }
    } else {
    Enumeration keys = torneo.getListaTurni();
    int n = 0;
    while (keys.hasMoreElements()) {
    lstModelTurni.add(
    lstTurni.getModel().getSize(),
    keys.nextElement());
    n++;
    }

    if (numTeams - 1 > n) {
    for (int i = n; i < numTeams - 1; i++) {
    lstModelTurni.add(
    lstTurni.getModel().getSize(),
    ("Turno #" + (i + 1) + " [da definire]"));
    }
    }

    }

    } else if (torneo.getTipoTorneo() == Tornei.TORNEO_DI_COPPA) {

    } else {
    JOptionPane.showMessageDialog(
    thisFrame,
    "Torneo estraneo",
    "Errore",
    2);
    return;

    } //FINE IF..ELSEIF..ELSE TIPO TORNEO
    lstTurni.addListSelectionListener(new cmdSelezionaTurno());
    }
    }
    }


    private class cmdSelezionaTurno implements ListSelectionListener {
    public void valueChanged(ListSelectionEvent e) {

    Tornei torneo=null;
    try {
    torneo= sessione.getServer().getTorneo((String)lstTornei.g etSelectedValue());
    } catch (NotFoundTorneoException e1) {
    e1.printStackTrace();
    }

    if (!e.getValueIsAdjusting()) {

    //Verifica che la chiave e corretta
    boolean validKey=true;
    try {
    utils.Data.parseDate((String) lstTurni.getSelectedValue());
    } catch (Exception e2) {
    validKey=false;
    }

    lblData.setEnabled(true);
    fldData.setEditable(true);
    btnSalva.setEnabled(true);
    btnPartecipanti.setEnabled(true);
    if (!validKey) {
    btnSalva.addActionListener(new cmdSalva());
    btnSalva.setText("Salva");
    } else {
    btnSalva.setText("Modifica data");
    btnSalva.addActionListener(new cmdModifica());
    }


    }
    }
    }

    private class cmdSalva implements ActionListener {

    public void actionPerformed(ActionEvent e) {
    //classe incriminata!!!!



    System.out.println("salva----------------------->");

    GregorianCalendar data= null;

    //Contralla inserimento
    if (fldData.getText() == "") {
    JOptionPane.showMessageDialog(thisFrame,"Inserisci una data" ,"Avviso",JOptionPane.INFORMATION_MESSAGE);
    return;
    }
    //Controllo correttezza
    try {
    data = utils.Data.parseDate(fldData.getText());
    } catch (Exception e1) {
    JOptionPane.showMessageDialog(thisFrame,"Formato errato.\n Inserirlo nella forma: gg/mm/aaaa hh:mm" ,"Avviso",JOptionPane.INFORMATION_MESSAGE);
    return;

    }

    //Estrazione torneo
    Tornei t =null;
    try {
    t = sessione.getServer().getTorneo((String) lstTornei.getSelectedValue());
    } catch (NotFoundTorneoException e2) {
    e2.printStackTrace();
    }


    //Crea il nuovo turno
    Turni turno = new Turni();
    turno.setStatoTurno(Turni.DA_GIOCARE);

    int[][][] giornate = Arena.calcoloGiornate(t.getNumeroGiocatori());

    //Aggiunge le partite
    for(int i=0; i< giornate[0].length; i++) {
    try {
    turno.addPartita(new PartitaMultiPlayer("",t.getGiocatore(giornate[lstTurni.getSelectedIndex()][i][0]-1),t.getGiocatore(giornate[lstTurni.getSelectedIndex()][i][1]-1),0,0));
    } catch (NullPointerException e3) {
    e3.printStackTrace();
    } catch (InvalidRangeException e3) {
    e3.printStackTrace();
    }
    }


    if (t.isInKey(fldData.getText())) {
    System.out.println("E dentro:"+fldData.getText());
    } else {
    System.out.println("E fuori:"+fldData.getText());
    }


    //aggiunta turno al vettore
    try {
    t.addTurno(fldData.getText(), turno);
    } catch (ChiaveErrataException e3) {
    System.out.println("chiave usata");
    e3.printStackTrace();
    }




    }

    }

    private class cmdModifica implements ActionListener {

    public void actionPerformed(ActionEvent e) {

    }

    }




    }

  8. #8
    quel performed, viene seguido a potenze di 2

    primo clic 1 volta
    secondo click 2 volte
    terzo click 4 volte!!!
    :di56: :di56:

  9. #9
    Ho risolto!
    Ogni volta che chiamo actionperformed, devo prima elimanre l'actionlistern presente!!!!

    Ecco il diff tra i due:
    --- UIDate_1.java 2005-06-11 19:47:17.000000000 +0200
    +++ UIDate.java 2005-06-11 19:42:36.000000000 +0200
    @@ -22,7 +22,10 @@
    private Session sessione;
    private JInternalFrame thisFrame = this;

    + //Action listener
    + private ActionListener acSalva;

    +

    //Pannelli
    private JPanel pnlTitolo = new JPanel();
    @@ -160,7 +163,8 @@
    public void valueChanged(ListSelectionEvent e) {
    //Cancella tutti gli elementi
    lstModelTurni.removeAllElements();
    -
    + btnSalva.removeActionListener(acSalva);
    +



    @@ -364,12 +368,13 @@
    btnSalva.setEnabled(true);
    btnPartecipanti.setEnabled(true);
    if (!validKey) {
    -
    - btnSalva.addActionListener(new cmdSalva());
    + acSalva = new cmdSalva();
    + btnSalva.addActionListener(acSalva);
    btnSalva.setText("Salva");
    } else {
    btnSalva.setText("Modifica data");
    - btnSalva.addActionListener(new cmdModifica());
    + acSalva=new cmdModifica();
    + btnSalva.addActionListener(acSalva);
    }


    @@ -448,6 +453,7 @@
    }


    + btnSalva.removeActionListener(acSalva);

    }


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.