Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Un fulmine sulla scrivania, Corsair Sabre v2 Pro ridefinisce la velocità nel gaming
Un fulmine sulla scrivania, Corsair Sabre v2 Pro ridefinisce la velocità nel gaming
Questo mouse ultraleggero, con soli 36 grammi di peso, è stato concepito per offrire un'esperienza di gioco di alto livello ai professionisti degli FPS, grazie al polling rate a 8.000 Hz e a un sensore ottico da 33.000 DPI. La recensione esplora ogni dettaglio di questo dispositivo di gioco, dalla sua agilità estrema alle specifiche tecniche che lo pongono un passo avanti
Nokia Innovation Day 2025: l’Europa ha bisogno di campioni nelle telecomunicazioni
Nokia Innovation Day 2025: l’Europa ha bisogno di campioni nelle telecomunicazioni
Dal richiamo di Enrico Letta alla necessità di completare il mercato unico entro il 2028 alla visione di Nokia sul ruolo dell’IA e delle reti intelligenti, il Nokia Innovation Day 2025 ha intrecciato geopolitica e tecnologia, mostrando a Vimercate come la ricerca italiana contribuisca alle sfide globali delle telecomunicazioni
Sottile, leggero e dall'autonomia WOW: OPPO Reno14 F conquista con stile e sostanza
Sottile, leggero e dall'autonomia WOW: OPPO Reno14 F conquista con stile e sostanza
OPPO Reno14 F 5G si propone come smartphone di fascia media con caratteristiche equilibrate. Il device monta processore Qualcomm Snapdragon 6 Gen 1, display AMOLED da 6,57 pollici a 120Hz, tripla fotocamera posteriore con sensore principale da 50MP e generosa batteria da 6000mAh con ricarica rapida a 45W. Si posiziona come alternativa accessibile nella gamma Reno14, proponendo un design curato e tutto quello che serve per un uso senza troppe preoccupazioni.
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


Un fulmine sulla scrivania, Corsair Sabre v2 Pro ridefinisce la velocità nel gaming Un fulmine sulla scrivania, Corsair Sabre v2 Pro...
Nokia Innovation Day 2025: l’Europa ha bisogno di campioni nelle telecomunicazioni Nokia Innovation Day 2025: l’Europa ha bisogno d...
Sottile, leggero e dall'autonomia WOW: OPPO Reno14 F conquista con stile e sostanza Sottile, leggero e dall'autonomia WOW: OPPO Reno...
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...
Adesso ci si può laureare in stor...
Impact.com ridefinisce il performance ma...
Nintendo non considera le mod dannose pe...
Dreame inaugura il suo flagship store a ...
OpenAI e Jony Ive: in arrivo un disposit...
TikTok, secondo Trump l'accordo con Xi &...
HUAWEI, tutte le novità dell'even...
Mercedes GenH2 Truck sulle Alpi: oltre 1...
Shadow Leak: ecco come ChatGPT poteva es...
Google Gemini 2.5 batte quasi tutti gli ...
Battlefield 6: i giocatori console non p...
Iliad rinnova l'offerta mobile: tre pian...
HUAWEI Watch GT 6 ufficiale: design al t...
Reggie Townsend di SAS: l’etica dell’IA ...
Startup Marathon in vista del traguardo:...
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: 01:42.


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