Pagina 3 di 4 primaprima 1 2 3 4 ultimoultimo
Visualizzazione dei risultati da 21 a 30 su 39
  1. #21
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    39
    si patrick conosco un po le nozioni di java e avevo fatto la variabile di tipo database static cosi' da poterla un attimo inizializzare! ho optato per la creazione di due variabili distinte del database! una creata nel main e inizializzata e poi quella globale della classe che sara' = a quella creata nel main.ho guardato il cardlayout ed e' molto carina come soluzione pero' adesso non so se a livello di tempo e di lavoro (visto gli impegni universitari) posso farcela a cambiare tutta l'impostazione del progetto,comunque sono sicuro che il prossimo progetto implementero' questo layout.per ora nel codice ho lasciato il metodo setConstraint in welcome e l'ho reso statico e ci accedo direttamente da li anche nel secondo jframe addBet. posto un po di codice va . non ti soffermare magari su qualche variabile dichiarata di qua e di la questo poi lo sistemo. ti volevo chiedere piu che altro: avevo in mente di rendere "invisibile" il tasto per l'inserimento della squadra fin quando i 4 campi (data,incasa,ospite,esito) non fossero completi, secondo me e' complicato nel senso ti propongo la mia soluzione con gli eventuali problemi.
    Soluzione 1
    Faccio controlli sul campo precedente ogni volta che clicco su un jtext del campo successivo.
    data:
    incasa:
    ospite:
    esito:
    se clicco su incasa ma non c'e' data non appare il pulsante inserisco. pero' il problema e' che dovrei fare tutte le combinazioni, potrei inserire prima l'esito poi la data. e' un casino.questo problema e' risolvibile facendo semplicemente un controllo sull'azione di aggiungi squadra infatti potrei fare il controllo che tutti non siano equals(""). pero' era per rendere la cosa un piu dinamica.ti posto un po il codice ora
    codice:
    import java.awt.*;
    import java.sql.*;
    import static java.awt.GridBagConstraints.*;
    
    import javax.swing.*;
    
    
    public class AddBet extends JFrame {
        Database db;
        JPanel pannello1;
        JLabel codice;
        JLabel data;
        JTextField dataF;
        JLabel inCasa;
        JTextField inCasaF;
        JLabel ospite;
        JTextField ospiteF;
        JLabel esito;
        JComboBox esitoF;
        JButton back;
        JButton exit;
        JButton newBet;
        JButton insertNew;
        JTextArea choiceTeam;
        String[] possibiliEsiti;
        int nSquadre = 0;
        int codBolla;
        
    	public AddBet(Database db){
    		super ("Aggiungi Scommessa");
    		this.db = db;
    		this.setResizable(false);
    		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    		this.setSize(1000,500);
    		this.setLocationRelativeTo(null);
    		GridBagLayout layout = new GridBagLayout();
    		GridBagConstraints limiti = new GridBagConstraints();
    		pannello1 = new JPanel();
    		pannello1.setLayout(layout);
    		//settaggio limiti dai bordi
    		limiti.insets.top = 15;
    		limiti.insets.bottom = 15;
    		limiti.insets.left = 15;
    		limiti.insets.right = 15;
    		
    		//creazione e aggiunta al pannello del bottone back
    		back = new JButton("Back");
    		back.setPreferredSize(new Dimension(75,25));
    		Welcome.setConstraint(limiti,0,0,1,1,1,1,NONE,NORTH);
    		pannello1.add(back,limiti);
    		
    		//creazione e aggiunta al pannello dell bottone exit
    		exit = new JButton(Welcome.icon);
    		exit.setPreferredSize(new Dimension(50,50));
    		Welcome.setConstraint(limiti,4,0,1,0,1,1,NONE,NORTH);
    		pannello1.add(exit,limiti);
    		
    		//creazione e aggiunta della label con il codice della scommessa autogenerato
    		codice = new JLabel("Codice Scommessa: ");
    		try{
    			ResultSet s = db.eseguiQuery("select count(codice) from Bolletta");
    			if(s.next()){
    				if(s.getString(1).equals("0")){
    					codBolla = 1;
    					codice.setText(codice.getText().concat("1"));
    				}
    				else{
    					s = db.eseguiQuery("select max(codice)+1 from Bolletta");
    					if(s.next()){
    							codBolla = Integer.parseInt(s.getString(1),10);
    							codice.setText(codice.getText().concat(s.getString(1)));
    						}
    				}
    			}
    		}
    		catch(SQLException e){
    			System.out.println(db.getErrore());
    		}
    		Welcome.setConstraint(limiti,0,1,1,1,1,1,NONE,CENTER);
    		pannello1.add(codice,limiti);
    		
    		//creazione e aggiunta della label con scritto "Data"
    		data = new JLabel("Data: ");
    		Welcome.setConstraint(limiti,0,2,1,1,1,1,NONE,CENTER);
    		pannello1.add(data,limiti);
    		
    		//creazione e aggiunta del JtextField che conterra la data della partita da inserire
    		dataF = new JTextField(15);
    		Welcome.setConstraint(limiti,1,2,1,1,1,1,NONE,CENTER);
    		pannello1.add(dataF,limiti);
    		
    		//creazione e aggiunta della label con scritto "Squadra Casa"
    		inCasa = new JLabel("Squadra in Casa: ");
    		Welcome.setConstraint(limiti,0,3,1,1,1,1,NONE,CENTER);
    		pannello1.add(inCasa,limiti);
    		
    		//creazione e aggiunta del JtextField che conterra squadra di casa
    		inCasaF = new JTextField(15);
    		Welcome.setConstraint(limiti,1,3,1,1,1,1,NONE,CENTER);
    		pannello1.add(inCasaF,limiti);
    		
    		//creazione e aggiunta della label con scritto "Squadra Ospite"
    		ospite = new JLabel("Squadra Ospite: ");
    		Welcome.setConstraint(limiti,0,4,1,1,1,1,NONE,CENTER);
    		pannello1.add(ospite,limiti);
    		
    		//creazione e aggiunta del JtextField che conterra la data della partita da inserire
    		ospiteF = new JTextField(15);
    		Welcome.setConstraint(limiti,1,4,1,1,1,1,NONE,CENTER);
    		pannello1.add(ospiteF,limiti);
    		
    		//creazione e aggiunta della label con scritto "Squadra Ospite"
    		esito = new JLabel("Esito: ");
    		Welcome.setConstraint(limiti,0,5,1,1,1,1,NONE,CENTER);
    		pannello1.add(esito,limiti);
    		
    		//creazione e aggiunta del JtextField che conterra la data della partita da inserire
    		possibiliEsiti = new String[16];
    		possibiliEsiti[0] = " ";
    		possibiliEsiti[1] = "1";
    		possibiliEsiti[2] = "X";
    		possibiliEsiti[3] = "2";
    		possibiliEsiti[4] = "GOAL";
    		possibiliEsiti[5] = "NO GOAL";
    		possibiliEsiti[6] = "UNDER 1,5";
    		possibiliEsiti[7] = "UNDER 2,5";
    		possibiliEsiti[8] = "OVER 1,5";
    		possibiliEsiti[9] = "OVER 2,5";
    		possibiliEsiti[10] = "1X";
    		possibiliEsiti[11] = "X2";
    		possibiliEsiti[12] = "12";
    		possibiliEsiti[13] = "1H";
    		possibiliEsiti[14] = "XH";
    		possibiliEsiti[15] = "R.E.";
    		esitoF = new JComboBox(possibiliEsiti);
    		Welcome.setConstraint(limiti,1,5,1,1,1,1,NONE,CENTER);
    		pannello1.add(esitoF,limiti);
    		
    		//creazione e aggiunta del bottone per passare alla creazione di una nuova bolla
    		newBet = new JButton("Nuova Scommessa");
    		Welcome.setConstraint(limiti,0,6,1,1,2,1,NONE,CENTER);
    		pannello1.add(newBet,limiti);
    		
    		//creazione e aggiunta del bottone per passare alla creazione di una nuova bolla
    		insertNew = new JButton("Inserisci Squadra");
    		Welcome.setConstraint(limiti,2,6,1,1,2,1,NONE,CENTER);
    		pannello1.add(insertNew,limiti);
    		
    		//creazione e aggiunta del bottone per passare alla creazione di una nuova bolla
    		choiceTeam = new JTextArea(20,40);
    		choiceTeam.setEditable(false);
    		Welcome.setConstraint(limiti,3,1,1,1,2,4,NONE,CENTER);
    		pannello1.add(choiceTeam,limiti);
    		
    		this.getContentPane().add(pannello1);
    		this.pack();
    		this.setVisible(true);
    	}
    
    }
    dovrebbe essere finita l'interfaccia devo solo inserire due piccoli textfield per l'eventuale inserimento di un risultato esatto ma e' fattibile in poco tempo. la jtextarea mi serve per inserirci tutte le squadre finora inviate dall'utente.
    questa e' invece la modifica fatta a welcome
    codice:
    import javax.swing.*;
    import java.awt.*;
    import static java.awt.GridBagConstraints.*;
    import java.awt.event.*;
    
    
    public class Welcome extends JFrame {
    	JButton aggiungi;
    	JButton verifica;
    	JButton inserisci;
    	JButton saldo;
    	JButton storico;
    	JButton exit;
    	static Icon icon;
    	JPanel pannello1;
    	JLabel testoScommesse;
    	Database db;
    	
    	public Welcome(Database db){
    		super("Gestione Scommesse");
    		this.db = db;
    		this.setResizable(false);
    		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
    		this.setSize(1000,500);
    		this.setLocationRelativeTo(null);
    		GridBagLayout layout = new GridBagLayout();
    		GridBagConstraints limiti = new GridBagConstraints();
    		pannello1 = new JPanel();
    		pannello1.setLayout(layout);
    		//settaggio limiti dai bordi
    		limiti.insets.top = 5;
    		limiti.insets.bottom = 5;
    		limiti.insets.left = 5;
    		limiti.insets.right = 5;
    		//creazione e aggiunta al pannello della label con l'immagine
    		testoScommesse = new JLabel();
    		testoScommesse.setIcon(new javax.swing.ImageIcon("/home/rambo/Downloads/calcio.gif"));
    		setConstraint(limiti,1,0,0,0,2,1,BOTH,CENTER);
    		pannello1.add(testoScommesse,limiti);
    		
    		//creazione e aggiunta al pannello del bottone aggiungi
    		aggiungi = new JButton("Aggiungi Scommessa");
    		aggiungi.setPreferredSize(new Dimension(200,25));
    		setConstraint(limiti,1,3,1,0,1,1,NONE,EAST);
    		pannello1.add(aggiungi,limiti);
    		aggiungi.addActionListener(new addListener());
    		//creazione e aggiunta al pannello del bottone verifica
    		verifica = new JButton("Verifica Vincita");
    		verifica.setPreferredSize(new Dimension(200,25));
    		setConstraint(limiti,1,4,1,0,1,1,NONE,EAST);
    		pannello1.add(verifica,limiti);
    		
    		//creazione e aggiunta al pannello del bottone saldo
    		saldo = new JButton("Visualizza Saldo");
    		saldo.setPreferredSize(new Dimension(200,25));
    		setConstraint(limiti,1,5,1,0,1,1,NONE,EAST);
    		pannello1.add(saldo,limiti);
    		
    		//creazione e aggiunta al pannello del bottone inserisci
    		inserisci = new JButton("Inserisci Risultati");
    		inserisci.setPreferredSize(new Dimension(200,25));
    		setConstraint(limiti,1,6,1,0,1,1,NONE,EAST);
    		pannello1.add(inserisci,limiti);
    		
    		//creazione e aggiunta al pannello del bottone storico
    		storico = new JButton("Visualizza Storico");
    		storico.setPreferredSize(new Dimension(200,25));
    		setConstraint(limiti,1,7,1,0,1,1,NONE,EAST);
    		pannello1.add(storico,limiti);
    		
    		//creazione e aggiunta al pannello del bottone exit
    		Image i=java.awt.Toolkit.getDefaultToolkit().getImage("/home/rambo/Downloads/exit.jpg");
    		i=i.getScaledInstance(50,50,Image.SCALE_DEFAULT);
    		icon = new ImageIcon(i);
    		exit = new JButton(icon);
    		exit.setPreferredSize(new Dimension(50,50));
    		setConstraint(limiti,3,0,1,0,1,1,NONE,NORTH);
    		pannello1.add(exit,limiti);
    		exit.addActionListener(new exitListener());
    		
    		//AGGIUNGO TUTTO AL FRAME E POI RENDO VISIBILE LA FINESTRA ADATTATA
    		this.getContentPane().add(pannello1);
    		this.pack();
    		this.setVisible(true);
    	}
    	public static void setConstraint(GridBagConstraints lim,int gridx,int gridy,int weightx,int weighty,int gridwidth,int gridheight,int fill,int anchor){
    		lim.gridx = gridx;
    		lim.gridy = gridy;
    		lim.weightx = weightx;
    		lim.weighty = weighty;
    		lim.gridwidth = gridwidth;
    		lim.gridheight = gridheight;
    		lim.fill = fill;
    		lim.anchor = anchor;
    	}
    	
    	public static void makeGUI(Database db){
    		Welcome w = new Welcome(db);
    	}
    	
    	
    	public static void main(String[] args) {
    		final Database db = new Database("GestioneBollette","root","sizzetta");
    		if ( !db.connetti() ) {
    			   System.out.println("Errore durante la connessione.");
    			   System.out.println( db.getErrore() );
    			   System.exit(0);
    		}
    		try{
    			SwingUtilities.invokeAndWait(new Runnable(){
    				public void run(){
    					makeGUI(db);
    				}
    			});
    		}
    		catch(Exception e){}
    	}
    	
    	private class exitListener implements ActionListener{
    
    		@Override
    		public void actionPerformed(ActionEvent arg0) {
    			db.disconnetti();
    			dispose();			
    		}
    		
    	}
    	private class addListener implements ActionListener{
    
    		@Override
    		public void actionPerformed(ActionEvent arg0) {
    			dispose();
    			new AddBet(db).setVisible(true);
    			
    		}
    		
    	}
    }

  2. #22
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Si, dovresti ovviamente rivedere l'intera interfaccia... o comunque evitare l'apertura del JFrame e rivedere alcune cose.


    L'array possibiliEsiti potresti inizializzarlo in un altro modo.
    Ovvero:
    codice:
    possibiliEsiti = {"Primo", "secondo", "terzo"};
    Eviteresti di specificare la dimensione e poi inserire ogni elemento specificando il suo indice...


    Non so se quando chiami il JFrame stesso utilizzi la parola chiave this per comodità o meno, comunque puoi anche non utilizzarla (è ridondante insomma).

    Ti consiglierei di raggruppare le variabili in un altro modo, ovvero:
    codice:
    private JButton aggiungi,verifica,inserisci,saldo,storico, exit;


    Come ho già detto l'oggetto Database nel main puoi evitarlo... puoi fare il controllo nel costruttore di Welcome; se i dati sono corretti continui, altrimenti chiudi tutto.


    codice:
    private class addListener implements ActionListener{
      @Override
      public void actionPerformed(ActionEvent arg0) {
        dispose();
          new AddBet(db).setVisible(true);
      }
    }
    Ma vuoi ripristinare Welcome chiudendo l'altro JFrame oppure no?
    In quel caso devi passare il "this" al costruttore AddBet, e fare setVisible(false); Oltretutto sinceramente scritto così potrebbe anche chiudersi prima della creazione dell'altro JFrame...

    Lasciare una variabile Icon come static e senza uno specificatore di accesso per questa utilità, è una pessima scelta! Piuttosto passala al costruttore di AddBet.

    Se hai una traccia da seguire sul progetto, mi piacerebbe vederla.

    Ora, arrivando alla tua domanda... l'operazione può essere un pò antipatica, in quanto devi utilizzare o un DocumentListener, oppure un FocusListener. Nel secondo caso, devi però verificare quando il campo viene selezionato e quando vene deselezionato; la cosa più ovvia sarebbe controllare il suo contenuto quando perde il focus.

    Vedi quale fa al caso tuo.

  3. #23
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    39
    eccomi ho seguito il consiglio dell'inizializzare in altro modo l'array possibiliEsiti.
    per quanto riguarda raggruppare le variabile dello stesso tipo non mi trovo siccome sono solito dimenticare il nome delle variabili e cosi' e' per me piu semplice trovarli
    ti spiego quella che e' la mia idea.
    connessione all'avvio del programma.
    apertura interfaccia welcome.
    scelta di un azione per esempio addBet.
    addBet utilizzera la connessione stabilita all'inizio e visualizzera un nuovo jframe chiudendo il vecchio(per questo DISPOSE).
    a welcome da addBet si potra tornare tramite tasto apposito BACK.
    in addBet ci sara' anche il tasto exit proprio perche' non si dovra' passare per welcome per uscire.
    capito piu o meno come sto gestendo la cosa?
    la "traccia" non l'ho trascritta e piu che altro sono cose che mi vengono al momento anche perche' e' un progettino piu per capire le funzionalita di swing che altro
    per la domanda ho risolto con qualche controllo in piu.per la icon seguo ancora il tuo consiglio di passarla al costruttore

  4. #24
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Ah ok, ora è più chiaro

    Però ti converrebbe pensarli bene prima, così da progettarli. So che molte idee vengono poi scrivendo codice, però la progettazione è senza dubbio il primo tassello.

    Fammi sapere come procede il lavoro (focus o document listener).

  5. #25
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    39
    sicuramente avrai mille aggiornamenti grazie mille dell'aiuto per ora ho finito di fare quella addbet e ho optato per i controlli alla pressione del tasto.voglio renderlo operativo. ora sto gestendo l'inserimento dei risultati ovvero:
    quando inserisco una partita in una bolletta la inserisco 2 volte nel database.
    una nella tabella squadre che tiene traccia anche in quale bolla e' stata inserita e quale risultato si prevede.
    l'altra invece nella tabella risultati che sara' compilata manualmente.
    ora sto gestendo questa seconda parte

  6. #26
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Originariamente inviato da Ramboz89
    sicuramente avrai mille aggiornamenti grazie mille dell'aiuto per ora ho finito di fare quella addbet e ho optato per i controlli alla pressione del tasto.voglio renderlo operativo. ora sto gestendo l'inserimento dei risultati ovvero:
    quando inserisco una partita in una bolletta la inserisco 2 volte nel database.
    una nella tabella squadre che tiene traccia anche in quale bolla e' stata inserita e quale risultato si prevede.
    l'altra invece nella tabella risultati che sara' compilata manualmente.
    ora sto gestendo questa seconda parte
    Prego!

    Sarebbe interessante anche vedere la struttura delle tabelle all'interno del DB...

    Ok, allora attendo aggiornamenti.

  7. #27
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    39
    queste sono le uniche tre tabelle nel mio database



    domani butto giu qualche idea per questa cosa dell'inserimento dei risultati.
    pensavo di gestirla con un jdialog. ovvero clic sulla modalita manuale di inserimento (inserisci tu la squadra) esce un jdialog che ti chiede quali sono le due squadre e il risutlato e poi lo invii. clic su modalita scorrimento(inserire tutti i risultati previsti) si apre un jdialog che non fa altro che scorrere il risultato della query contenenti tutti le partite che si pensano finite!
    che ne dici?

  8. #28
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Non mi è ben chiaro il modo in cui intendi svolgerlo (e nemmeno a te, da quanto hai detto :P) ma le tabelle da quanto noto non hanno una relazione tra di loro... alcuni elementi sono ripetitivi, questo ti "sporca" un pò il lavoro.
    Se mi dici meglio che hai in mente, e come devono interagire i dati, magari troviamo una soluzione migliore a partire dalle tabelle (magari per una prossima versione ^^).


    Originariamente inviato da Ramboz89
    clic su modalita scorrimento(inserire tutti i risultati previsti) si apre un jdialog che non fa altro che scorrere il risultato della query contenenti tutti le partite che si pensano finite!
    Non mi è ben chiara questa parte... che operazione intenderesti svolgere?

  9. #29
    Utente di HTML.it
    Registrato dal
    Apr 2011
    Messaggi
    39
    allora
    essendo un applicazione che non interagisce con il web ovviamente i risultati delle partite finora inserite nelle bollette devono essere inseriti manualmente.
    in Bolletta ci sono il codice che lo identifica, la data in cui e' stata giocata, l'importo, lo stato (in corso,vinta,persa) e adesso ho aggiunto la vincita per gestire il saldo ecc.
    in Squadre ci sono le partite inserite nella bolletta con le due squadre, la data della partita(potrei avere due partite uguali a distanza di un anno oppure in coppa),e l'esito da me sperato.
    in Risultati invece ci sono tutte le squadre presenti nella bolletta. ovviamente una sola volta. e inserisco le due squadre e i gol di casa e trasferta.
    ora la mia idea, sviluppando l'interfaccia insertResult e' quella di modificare la tabella risultati cosi' da avere sotto controllo per esempio quella partita che potrebbe essere presente in piu bollette con diversi esiti. capito la mia idea generale ora?
    ora ho pensato che appena si accede ad insertResult ti avvisa di quante partite potrebbero essere finite. poi tu decidi se inserire per esempio il risultato di una sola partita tipo inter napoli 0 3 oppure inserirle tutte scorrendo tutto il resultset dell'interrogazione SELECT * FROM RISULTATI WHERE DATA <= SYSDATE().
    che ne dici? troppo contorto? che dici i JOptionPane possono fare al caso mio? con un inputwindow ovviamente

  10. #30
    Utente di HTML.it
    Registrato dal
    Dec 2009
    Messaggi
    1,123
    Originariamente inviato da Ramboz89
    allora
    essendo un applicazione che non interagisce con il web ovviamente i risultati delle partite finora inserite nelle bollette devono essere inseriti manualmente.
    in Bolletta ci sono il codice che lo identifica, la data in cui e' stata giocata, l'importo, lo stato (in corso,vinta,persa) e adesso ho aggiunto la vincita per gestire il saldo ecc.
    in Squadre ci sono le partite inserite nella bolletta con le due squadre, la data della partita(potrei avere due partite uguali a distanza di un anno oppure in coppa),e l'esito da me sperato.
    in Risultati invece ci sono tutte le squadre presenti nella bolletta. ovviamente una sola volta. e inserisco le due squadre e i gol di casa e trasferta.
    ora la mia idea, sviluppando l'interfaccia insertResult e' quella di modificare la tabella risultati cosi' da avere sotto controllo per esempio quella partita che potrebbe essere presente in piu bollette con diversi esiti. capito la mia idea generale ora?
    ora ho pensato che appena si accede ad insertResult ti avvisa di quante partite potrebbero essere finite. poi tu decidi se inserire per esempio il risultato di una sola partita tipo inter napoli 0 3 oppure inserirle tutte scorrendo tutto il resultset dell'interrogazione SELECT * FROM RISULTATI WHERE DATA <= SYSDATE().
    che ne dici? troppo contorto? che dici i JOptionPane possono fare al caso mio? con un inputwindow ovviamente
    Bhe tralascio la struttura delle tabelle, prima di tutto perchè ormai è creata e si posa tutto su di essa, ed in secondo luogo perchè non avrei abbastanza energie per pensare a qualcosa xD

    L'idea potrebbe andare, però dipende dal numeri di risultati che avrai. Può essere scomodo ma anche sconveniente (in termini di memoria) dover gestire molti dati all'interno di una struttura come una JList.

    Ad essere sincero lo utilizzo poco inputWindow... comunque se si tratta di inserire un solo dato, ci può stare... eviti di dover scrivere un sacco di codice per un solo input.

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 © 2026 vBulletin Solutions, Inc. All rights reserved.