Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Destiny Rising: quando un gioco mobile supera il gioco originale
Destiny Rising: quando un gioco mobile supera il gioco originale
Tra il declino di Destiny 2 e la crisi di Bungie, il nuovo titolo mobile sviluppato da NetEase sorprende per profondità e varietà. Rising offre ciò che il live service di Bungie non riesce più a garantire, riportando i giocatori in un universo coerente. Un confronto che mette in luce i limiti tecnici e strategici dello studio di Bellevue
Plaud Note Pro convince per qualità e integrazione, ma l’abbonamento resta un ostacolo
Plaud Note Pro convince per qualità e integrazione, ma l’abbonamento resta un ostacolo
Plaud Note Pro è un registratore digitale elegante e tascabile con app integrata che semplifica trascrizioni e riepiloghi, offre funzioni avanzate come template e note intelligenti, ma resta vincolato a un piano a pagamento per chi ne fa un uso intensivo
Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy?
Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy?
Google Pixel 10 è uno smartphone che unisce una fotocamera molto più versatile rispetto al passato grazie allo zoom ottico 5x, il supporto magnetico Pixelsnap e il nuovo chip Tensor G5. Il dispositivo porta Android 16 e funzionalità AI avanzate come Camera Coach, mantenendo il design caratteristico della serie Pixel con miglioramenti nelle prestazioni e nell'autonomia. In Italia, però, mancano diverse feature peculiari basate sull'AI.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 14-10-2003, 13:23   #1
tognesimo
Senior Member
 
Iscritto dal: Mar 2001
Città: Grosseto
Messaggi: 2451
Un aiuto per un programmino in java

Ho realizzato con l'aiuto di un utente del forum un programmino in java che dovevo comsegnare ad un prof. per l'università.LA questione è questa:nel programmino è presente la classe Simone che ha al suo interno il main.Io ho creato dei metodi(6 per la precisione) ovvero ricerca libro,ricerca cd,cancella libro,cancella cd,inserisci libro inserisci cd ma non sono dentro al main.Come si fa a metterli nel main?Il prof mi ha detto che gli actionlistener devo metterli dentro al main
Allego anche il programmino!!
Allegati
File Type: zip simone.zip (2.7 KB, 8 visite)
__________________
Hp Omen 15 - Ryzen 5800H - RTX 3060 6Gb
tognesimo è offline   Rispondi citando il messaggio o parte di esso
Old 14-10-2003, 14:56   #2
tognesimo
Senior Member
 
Iscritto dal: Mar 2001
Città: Grosseto
Messaggi: 2451
Nessuno che aiuta un povero studente che ne sa poco sul java??
Forza raga datemi una mano!!!!
__________________
Hp Omen 15 - Ryzen 5800H - RTX 3060 6Gb
tognesimo è offline   Rispondi citando il messaggio o parte di esso
Old 14-10-2003, 15:19   #3
PGI
Bannato
 
L'Avatar di PGI
 
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
E' un programma così bellino, con un codice così pulito e ben fatto, perchè cavolo vuole farti infilare gli ActionListener nel main?

Bisognerebbe chiedergli se vuole tutto il codice dell'actionlistener nel main oppure solo la dichiarazione ed inizializzazione delle classi che implementano ActionListener nel main, oppure un solo ActionListener per tutti gli eventi dichiarato o costruito nel main.

Alla peggio (ammucchiata nel main) sarai costretto ad usare delle istanze delle interfacce ActionListener create nel main, tipo:
Codice:
public static void main(String[] args) {
  ActionListener listener1=new ActionListener() {
    public void actionPerformed(ActionEvent a) {
      //gestione eventi
    }
  };

  //e poi le passi ad un costruttore di MenuFrame
  MenuFrame frame=new MenuFrame(listener1)
}
Ma sinceramente così si aprono un migliardone di problemi, mi sembra veramente insostenibile...sei sicuro sicuro che abbia detto che vuole tutti gli ActionListener nel main?

Ultima modifica di PGI : 14-10-2003 alle 15:23.
PGI è offline   Rispondi citando il messaggio o parte di esso
Old 15-10-2003, 12:32   #4
tognesimo
Senior Member
 
Iscritto dal: Mar 2001
Città: Grosseto
Messaggi: 2451
Ti faccio sapere,gli ho mandato una mail,vediamo cosa mi risponde.Lui mi ha detto di implementare gli action listener nel main e non di richiamarli esternamente.Puoi darmi una mano?
__________________
Hp Omen 15 - Ryzen 5800H - RTX 3060 6Gb
tognesimo è offline   Rispondi citando il messaggio o parte di esso
Old 15-10-2003, 14:25   #5
PGI
Bannato
 
L'Avatar di PGI
 
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
Una mano la do volentieri, pur restando fermamente convinto dell'inutilità di quello che ti è stato chiesto di fare.

Il problema è che "implementare nel main" non è proprio una linea guida così definita: ad esempio, potresti creare nel main i tuoi oggetti ActionListener e nei rispettivi metodi "actionPerformed" rinviare a metodi esterni, tipo:

Codice:
p s v main(...) {

ActionListener listener1=new ActionListener() {
 public void actionPerformed(ActionEvent a) {
   doSome();
 }
}

}

p s v doSome() {...}
Si coglie l'assurdità: perchè dichiarare un ActionListener nel main se poi posso fargli usare dei metodi esterni al main?

D'altro canto, dovendo usare direttamente il metodo actionPerformed per gestire la funzione, per questioni legate alla jvm gli oggetti a cui può accedere il corpo di una classe "astratta" (però non metterei la mano sul fuoco sul fatto che questo sia il termine esatto per definire il nostro listener "interno") devono essere costanti (final). Si può fare, per carità, ma il senso mi sfugge. Cmq, quando hai la risposta del professore fatti sentire e vediamo.

&Ciao.
PGI è offline   Rispondi citando il messaggio o parte di esso
Old 16-10-2003, 13:30   #6
tognesimo
Senior Member
 
Iscritto dal: Mar 2001
Città: Grosseto
Messaggi: 2451
Allora,ho appena parlato col prof:
lui vuole che i metodi "inserisci libro,inserisci cd" siano metodi della classe simone e gli action listener siano contenuti li dentro.In pratica lui mi ha detto che gli actionlistener devono essere interni alla classe simone e non esterni.listen e listenl sono metodi relativi alla cancellazione dei libri e dei cd(questi action listener devo essere dentro simone.
Inoltre mi ha detto di mettere cd e libro come esterne(penso siano gia classi esterne giusto?)!!
__________________
Hp Omen 15 - Ryzen 5800H - RTX 3060 6Gb

Ultima modifica di tognesimo : 16-10-2003 alle 14:17.
tognesimo è offline   Rispondi citando il messaggio o parte di esso
Old 16-10-2003, 19:02   #7
PGI
Bannato
 
L'Avatar di PGI
 
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
La cosa allora ha un senso, diciamo che lui vuole un certo modello di organizzazione delle classi, diverso da quello che hai adottato e per certi versi più comune.

Libro e CD sono due oggetti e li crei a partire da un modello di classe (e qui le due classi Libro e CD sono perfette).
Poichè CD e Libro sono già classi esterne, pur essendo definite nello stesso file sorgente, credo che il tuo prof. voglia che tu crei anche due file sorgente (CD.java e Libro.java). E' sufficiente un copia e incolla. (sempre che tu non abbia già i file "separati").

Listen e ListenLibri le elimini e "travasi" il loro contenuto in un unico actionPerformed.

Quale?

Anche qui devo interpretare i voleri dell'onnipotente: secondo me adotti una "tecnica" consigliabile, quella di tenere separata la classe che contiene il main dal resto del codice sorgente.

Tuttavia, dovendo comunque usare Simone per un'ActionListener ti conviene far diventare Simone la finestra dell'applicazione (spostando in pratica il contenuto di MenuFrame in Simone), fargli implementare appunto ActionListener e raggruppare tutti gli eventi nel suo actionPerformed.

Nella classe MenuFrame hai usato delle istanze astratte di ActionListener per alcuni bottoni (es. searchButtonBook.addActionListener(new ActionListener()...).

Adesso devi delegare il compito di quelle classi ad un metodo della classe Simone e poi richiamarlo nel suo actionListener in associazione all'evento proveniente dal componente searchButton.

Non è sbagliato l'uso di classi astratte, ma ha un suo scopo, che è quello di ridurre al minimo il ritardo di risposta agli eventi che si ha quando ci si trova di fronte a sfilze di pulsanti e si deve verificare nell'acitonPerformed chi abbia lanciato l'evento AWT. Nel nostro caso, mi sembra che Egli voglia un unico ActionListener, tu esegui .

In estream sintesi, la struttura del tuo programma credo debba seguire questo schema:

Codice:
1 file CD.java -> sorgente della classe CD
1 file Libro.java -> sorgente della classe Libro
1 file Simone.java -> la parte "grafica" dell'applicaizone + il main:

class Simone extends JFrame implements ActionListener {
 Button cdButton=null;

 p s v main(...) {
  new Simone();
 }

 Simone() {
   ...costruzione della GUI
   show();
 }

 actionPerformed(evento) {
  if(evento.source==cdButton) {
    metodoAssociatoAcdButton();
  }
 }

 metodoAssociatoAcdButton() {
  faiqualcosa...
 }
}
Si può capire come l'intero codice debba essere ampiamente rimaneggiato, tuttavia, poichè le routine che hai già sono perfettamente funzionanti, alla fine è più un lavoro di spostamento da qui a là e da li a qui.
PGI è offline   Rispondi citando il messaggio o parte di esso
Old 17-10-2003, 12:31   #8
tognesimo
Senior Member
 
Iscritto dal: Mar 2001
Città: Grosseto
Messaggi: 2451
Hai Pvt PGI
__________________
Hp Omen 15 - Ryzen 5800H - RTX 3060 6Gb
tognesimo è offline   Rispondi citando il messaggio o parte di esso
Old 17-10-2003, 16:36   #9
PGI
Bannato
 
L'Avatar di PGI
 
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
In allegato c'è lo stesso programma "spezzato" in tre classi (che tra l'altro già c'erano) CD, Libro e Simone.

Di "Simone.java" è cambiata solo l'organizzazione delle funzioni (c'è un unico actionListener adesso) che matengono invariato il contenuto.

Credo che il codice possa essere ridotto anche parecchio però non so quale sia il livello di conoscenza presunto dal tuo professore. Se il corso è stato di ben 8 ore direi che quello che hai fatto ha già dello straordinario.

&Ciao.
Allegati
File Type: zip simone.zip (3.9 KB, 6 visite)
PGI è offline   Rispondi citando il messaggio o parte di esso
Old 17-10-2003, 19:41   #10
tognesimo
Senior Member
 
Iscritto dal: Mar 2001
Città: Grosseto
Messaggi: 2451
Grazie Pgi,se voglio cambiare il nome della classe "Simone" in "Archivio" come faccio?Ti ringrazio per il tuo aiuto mi 6 stato davvero prezioso!
__________________
Hp Omen 15 - Ryzen 5800H - RTX 3060 6Gb
tognesimo è offline   Rispondi citando il messaggio o parte di esso
Old 17-10-2003, 20:14   #11
PGI
Bannato
 
L'Avatar di PGI
 
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
nel file Simone.java cambi il nome della classe da Simone ad Archivio, salvi (sempre come Simone.java) poi rinomini il file in Archivio.java e ricompili.

oppure cambi il nome della classe da Simone ad Archivio (sempre nel sorgente) poi salvi come Arichivio.java e ricompili.

&Ciao
PGI è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2003, 13:51   #12
tognesimo
Senior Member
 
Iscritto dal: Mar 2001
Città: Grosseto
Messaggi: 2451
grazie PGI ho risolto!!Una piccola cosa:Quando ha creato l'action performed come hai fatto ad ottenere un puntatore all'oggetto che ha generato l'evento?
__________________
Hp Omen 15 - Ryzen 5800H - RTX 3060 6Gb
tognesimo è offline   Rispondi citando il messaggio o parte di esso
Old 20-10-2003, 14:23   #13
PGI
Bannato
 
L'Avatar di PGI
 
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
C'è una versione breve (quella che ti propino) ed una più lunga.

La breve:

actionPerformed(ActionEvent a) {...}

gli ActionEvent hanno un metodo "Object getSource()" che restituisce un "riferimento" all'oggetto che ha generato l'evento.

Cosa sia realmente quel "oggetto sorgente" dipende da come è fatto l'ActionEvent, per i componenti che trovi nelle librerie swing, awt et similia è il componente su cui hai agito ma nulla vieta la creazione di eventi che abbiano impostato come sorgente un oggetto totalmente diverso.

&Ciao.

PS, fammi sapere (se vuoi) com'è andata col prof, che sono curioso
PGI è offline   Rispondi citando il messaggio o parte di esso
Old 21-10-2003, 10:09   #14
cn73
Senior Member
 
L'Avatar di cn73
 
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
E soprattutto quando ti da il voto dagli il libretto di PGI.
cn73 è offline   Rispondi citando il messaggio o parte di esso
Old 21-10-2003, 10:27   #15
PGI
Bannato
 
L'Avatar di PGI
 
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
Dai non dire così

Ho solo separato in 3 parti un file di testo, tutte le routine e tutta la parte grafica sono assolutamente farina del suo sacco (o almeno del sacco che è arrivato a me ), se non fosse stato per il poco tempo a disposizione l'avrebbe fatto da solo e forse anche meglio.


&Ciao.
PGI è offline   Rispondi citando il messaggio o parte di esso
Old 22-10-2003, 13:25   #16
tognesimo
Senior Member
 
Iscritto dal: Mar 2001
Città: Grosseto
Messaggi: 2451
Quote:
Originariamente inviato da cn73
E soprattutto quando ti da il voto dagli il libretto di PGI.
Se fossi stato tu nella mia situazione voglio vedere cosa avresti fatto.Ho fatto solo 8 ore di java con un prof. che era al primo anno di insegnamento(e quindi puoi immaginare che razza di esperienza avesse).E poi a ingegneria pretendono cose al limite dell'immaginabile.Io voglio imparare il Java ma il tempo che ci danno loro è praticamente niente.Sicuramente sarei arrivato ad una conclusione ma avrebbe richiesto certamente molto + tempo di quello che mi ha dato quel figlio di p****a.Cercate di capirmi!!
__________________
Hp Omen 15 - Ryzen 5800H - RTX 3060 6Gb
tognesimo è offline   Rispondi citando il messaggio o parte di esso
Old 22-10-2003, 16:00   #17
cn73
Senior Member
 
L'Avatar di cn73
 
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
Perchè credi che non mi cia trovato nella tua situazione?? A scuola, all'università e e al lavoro? E te lo ripeto, come ti scrissi nell'altro tuo post, non ci sarà sempre qualcuno ad aiutarti, anzi a "sostituirti".
Io cerco di capirti, e ti avrei aiutato per primo se non mi fossi accorto che non avevi volontà di ricercare e applicarti ma solo di avere la pappa pronta. Almeno questa è stata la mia impressione nell'altro tuo post, questo non l'ho manco letto.
Scusa la durezza.
cn73 è offline   Rispondi citando il messaggio o parte di esso
Old 22-10-2003, 16:15   #18
PGI
Bannato
 
L'Avatar di PGI
 
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
[Scherz' mode on]

Se c'è qualcuno che vuol fare ammenda, avrei qui un 4000 linee di codice Java da ottimizzare, così, tanto per divertirsi...
PGI è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Destiny Rising: quando un gioco mobile supera il gioco originale Destiny Rising: quando un gioco mobile supera il...
Plaud Note Pro convince per qualità e integrazione, ma l’abbonamento resta un ostacolo Plaud Note Pro convince per qualità e int...
Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy? Google Pixel 10 è compatto e ha uno zoom ...
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre Prova GeForce NOW upgrade Blackwell: il cloud ga...
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco Ecovacs Deebot X11 Omnicyclone: niente più...
La GTX 2080 Ti mai arrivata sul mercato,...
Hoolow Knight: Silksong, il gioco che a ...
Duolingo crolla in Borsa: la minaccia ar...
Battlefield 6: i giocatori console potra...
Citroen Racing, la marca ritorna alle co...
Windows 10 ESU: come partecipare al prog...
ASUS Vivobook 16X a meno di 470€ su Amaz...
Con Agent Payments Protocol di Google gl...
Windows 10 muore, gli attivisti insorgon...
NVIDIA sarà il primo cliente di T...
Stellantis cancella il pick-up elettrico...
Microsoft termina il supporto per Office...
VaultGemma di Google è il primo L...
Uno studio svela come usiamo ChatGPT, il...
Bucano con una trivella la galleria ferr...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 17:43.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v