Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione
HONOR ha finalmente lanciato il suo nuovo flagship: Magic 8 Pro. Lo abbiamo provato a fondo in queste settimane e ve lo raccontiamo nella nostra recensione completa. HONOR rimane fedele alle linee della versione precedente, aggiungendo però un nuovo tasto dedicato all'AI. Ma è al suo interno che c'è la vera rivoluzione grazie al nuovo Snapdragon 8 Elite Gen 5 e alla nuova MagicOS 10
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata
Le webcam Insta360 Link 2 Pro e Link 2C Pro sono una proposta di fascia alta per chi cerca qualità 4K e tracciamento automatico del soggetto senza ricorrere a configurazioni complesse. Entrambi i modelli condividono sensore, ottiche e funzionalità audio avanzate, differenziandosi per il sistema di tracciamento: gimbal a due assi sul modello Link 2 Pro, soluzione digitale sul 2C Pro
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza
Motorola edge 70 porta il concetto di smartphone ultrasottile su un terreno più concreto e accessibile: abbina uno spessore sotto i 6 mm a una batteria di capacità relativamente elevata, un display pOLED da 6,7 pollici e un comparto fotografico triplo da 50 MP. Non punta ai record di potenza, ma si configura come alternativa più pragmatica rispetto ai modelli sottili più costosi di Samsung e Apple
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 29-11-2008, 11:40   #1
Reflex86
Member
 
L'Avatar di Reflex86
 
Iscritto dal: Aug 2003
Città: Roma
Messaggi: 88
[Java] creare lista JComboBox piu velocemente

Dunque, il problema è banale ma non riesco a risolverlo

Praticamente mi occorre creare un JComboBox che permetta di scegliere un valore da 1 a 9999, e questo oggetto va a finire in una maschera che viene replicata per 12 volte.

Codice:
  String[] combolist = new String[10000];
   	for (int i=1; i<10000; i++)
    	combolist[i] = ""+i;
    final JComboBox combo = new JComboBox(combolist);
Ora il problema è che ci mette una eternità a caricare il programma visto che deve rifare la medesima cosa per 12 volte, esiste un modo piu veloce per fare il tutto? Spulciando tra i metodi non ho trovato nulla che potesse fare al caso mio

Grazie
__________________
Config: Asus P5QL-E, Core2Duo E8400 3,0GHz, POV GeForce 9800GTX+, HD Seagate Barracuda 500GB, 4GB Kingston DDR800
Reflex86 è offline   Rispondi citando il messaggio o parte di esso
Old 29-11-2008, 13:30   #2
Don[ITA]
Senior Member
 
L'Avatar di Don[ITA]
 
Iscritto dal: Jul 2006
Città: Bergamo
Messaggi: 401
Ma ripeti 12 volte il codice che hai scritto per caso?
__________________
iMac 27" 5K
Don[ITA] è offline   Rispondi citando il messaggio o parte di esso
Old 29-11-2008, 13:49   #3
Reflex86
Member
 
L'Avatar di Reflex86
 
Iscritto dal: Aug 2003
Città: Roma
Messaggi: 88
Ti spiego, praticamente è una interfaccia grafica che deve gestire 12 oggetti separati. Quindi quel codice che ho postato sopra è nel costruttore di questa classe e quando creo l'interfaccia, vengono aggiunti 12 oggetti in un tabbedpane che racchiude tutto

ma ci mette veramente troppo, se tolgo quel ciclo impiega qualcosa come 15 secondi in meno ad avviarsi (su 25 totali).. lo so che il tempo è relativo, però è buon indice che qualcosa non quadra
__________________
Config: Asus P5QL-E, Core2Duo E8400 3,0GHz, POV GeForce 9800GTX+, HD Seagate Barracuda 500GB, 4GB Kingston DDR800
Reflex86 è offline   Rispondi citando il messaggio o parte di esso
Old 29-11-2008, 16:11   #4
Don[ITA]
Senior Member
 
L'Avatar di Don[ITA]
 
Iscritto dal: Jul 2006
Città: Bergamo
Messaggi: 401
15 secondi per eseguire quel ciclo???
Sicuro che non siano millisecondi??

Cmq posta anche il resto del codice così vediamo dove stà l'intoppo che ti rallenta così tanto anche perchè 25 secondi per far partire un'applicazione mi sembrano un attimo tanti
__________________
iMac 27" 5K
Don[ITA] è offline   Rispondi citando il messaggio o parte di esso
Old 05-12-2008, 11:45   #5
Reflex86
Member
 
L'Avatar di Reflex86
 
Iscritto dal: Aug 2003
Città: Roma
Messaggi: 88
Codice:
public class Program {
public program(){

...

final JComboBox nominalflow_combo = new JComboBox(LIST);

...

}
   private static final String LIST[];
   static{
      LIST = new String[9999];
      for (int i=0; i<9999; i++)
    	    LIST[i] = ""+(i+1);
   }
}
Genero quindi un combobox utilizzando un array statico.

il programma principale, crea 12 istanze dell'oggetto program che va a sbattere nella interfaccia dentro un tabbedpane.

Codice:
public class main {

Program[] unit = new Program[PROGRAM_MAX]; 
	for (int i=0; i<PROGRAM_MAX; i++){
	  unit[i] = new Program();
}

JTabbedPane tabbedPane = new JTabbedPane(); 
 	for (int i=0; i<PROGRAM_MAX; i++)
		tabbedPane.addTab("Program "+(i+1), null, unit[i].getPanel(),"Program nr: "+(i+1));	

...

ora, se io al posto di new JComboBox(LIST) credo un combobox vuoto JComboBox() la differenza per caricare il programma è di ben 17 secondi (!!!) possibile che per popolare 12 box mi ci metta così tanto? Probabilmente mi sfugge qualcosa..
__________________
Config: Asus P5QL-E, Core2Duo E8400 3,0GHz, POV GeForce 9800GTX+, HD Seagate Barracuda 500GB, 4GB Kingston DDR800
Reflex86 è offline   Rispondi citando il messaggio o parte di esso
Old 05-12-2008, 12:49   #6
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Ehm, ma così, per curiosità, PROGRAM_MAX quanto vale?

Un'altra cosa.
Potresti per favore spiegare a cosa serve una ComboBox che permette all'utente di scegliere un valore compreso tra 1 e 9999?
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)

Ultima modifica di banryu79 : 05-12-2008 alle 12:51.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 05-12-2008, 14:30   #7
Reflex86
Member
 
L'Avatar di Reflex86
 
Iscritto dal: Aug 2003
Città: Roma
Messaggi: 88
PROGRAM_MAX vale 12

e per la combo mi serve così perchè è più immediato selezionare in questo modo il valore, cmq non mi pare normale che ci metta cosi tanto per popolare delle liste, sbaglio?
__________________
Config: Asus P5QL-E, Core2Duo E8400 3,0GHz, POV GeForce 9800GTX+, HD Seagate Barracuda 500GB, 4GB Kingston DDR800
Reflex86 è offline   Rispondi citando il messaggio o parte di esso
Old 05-12-2008, 15:55   #8
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da Reflex86 Guarda i messaggi
PROGRAM_MAX vale 12
Quindi questo ciclo istanzia 12 oggetti di tipo Program:
Codice:
public class main {

Program[] unit = new Program[PROGRAM_MAX]; 
	for (int i=0; i<PROGRAM_MAX; i++){
	  unit[i] = new Program();
}

JTabbedPane tabbedPane = new JTabbedPane(); 
 	for (int i=0; i<PROGRAM_MAX; i++)
		tabbedPane.addTab("Program "+(i+1), null, unit[i].getPanel(),"Program nr: "+(i+1));	

...
Notiamo che un oggetto Program istanzia al suo interno quasi 10.000 stringhe uniche (tutti i numeri da 0 a 9999, cioè tutte le stringhe che li rappresentano a partire dalla stringa "0" fino alla stringa "9999").
Questo di per se non sarebbe il collo di bottiglia [intendo il fatto di istanziare 10.000 stringhe].

Tu stesso hai notato in precedenza:
Quote:
...ora, se io al posto di new JComboBox(LIST) credo un combobox vuoto JComboBox() la differenza per caricare il programma è di ben 17 secondi (!!!)...
Il problema infatti è questo.
Passare come argomento al costruttore di JComboBox un array (in questo specifico caso di String) significa il processo di costruzione del Combo Box Model associato a quel JComboBox sarà un tantino pesantuccio se l'array contiene un numero notevole di items.

Prova un po' a ficcare solo 100 String nell'array LIST invece delle 10.000 attuali e dovresti notare una certa differenza di tempistica (e questo a prescindere dal fatto che così facendo istanzierai solo 100 String invece che 10.000: l'istanziazione delle 10.000 String di per se non deve essere un problema, il problema è appunto creare un Combo Model così esageratamente grande, quando mai ti è capitato di vedere ComboBox con 10.000 items??? A me MAI fin'ora)...

Sospetto che il problema sia concettuale, cioè che tu stia usando lo strumento sbagliato per raggiungere il risultato che ti serve ottenere, il che ci porta alla seconda domanda che ti ho fatto:
Quote:
Originariamente inviato da Reflex86 Guarda i messaggi
e per la combo mi serve così perchè è più immediato selezionare in questo modo il valore, cmq non mi pare normale che ci metta cosi tanto per popolare delle liste, sbaglio?
A parte il fatto che selezionare un valore da una lista di 10.000 items non mi sembra poi così "immediato" (metti che voglio l'item numero 4.789, la lista a cascata che compare sotto il ComboBox parte dal valore 1 e me ne mostra solo un tot. quanto mi tocca "scrollare" di rotellina o cliccare sulla freccetta "giù" prima di arrivare al valore che mi serve? Non faccio molto, molto prima a scrivere direttamente io il valore?) per ottenere questo scopo stai:
1- istanziando 10.000 String;
2- creando un(in realtà 12) Combo Model enorme di 10.000 items;

Non è che forse te la puoi cavare con qualche altro controllo?
Per esempio uno Spinner?

Nota: sto scrivendo di fretta.
A scanso di equivoci: chiedo scusa se i toni possono sembrare provocatori, non ho alcuna intenzione di offenderti o fare del sarcasmo, le osservazioni che ho postato le ho postate con l'intento di far cadere la tua attenzione su determinate problematiche nella speranza di stimolare da parte tua delle riflesisoni utili.
Magari avevi già pensato a tutto questo e io non ho capito bene la situazione: capita, sono nubbio

Ciao.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)

Ultima modifica di banryu79 : 05-12-2008 alle 15:58.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 05-12-2008, 16:13   #9
Reflex86
Member
 
L'Avatar di Reflex86
 
Iscritto dal: Aug 2003
Città: Roma
Messaggi: 88
mmm hai perfettamente ragione, non pensavo fosse così oneroso il dover creare quei combobox comunque, ora mi studio un po' JSpinner e vedo se può fare al caso mio e come modificare il resto del codice eventualmente, ti ringrazio per la dritta

Considerando che il programma in tutto impiega qualcosa come 48 secondi a caricare mi sa che dovrò fare un bel po' di alleggerimenti Sicuramente sbaglio qualcosa a livello di gestione degli eventi, ma eventualmente aprirò un altro thread, cmq provo così e vediamo se posso limare quei 17 secondi
__________________
Config: Asus P5QL-E, Core2Duo E8400 3,0GHz, POV GeForce 9800GTX+, HD Seagate Barracuda 500GB, 4GB Kingston DDR800
Reflex86 è offline   Rispondi citando il messaggio o parte di esso
Old 05-12-2008, 16:31   #10
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da Reflex86 Guarda i messaggi
...
Considerando che il programma in tutto impiega qualcosa come 48 secondi a caricare mi sa che dovrò fare un bel po' di alleggerimenti Sicuramente sbaglio qualcosa a livello di gestione degli eventi, ma eventualmente aprirò un altro thread...
Probabilmente c'è qualche altro problema.
Prova a controllare:
- i cicli;
- il codice che hai inserito nei metodi di gestione degli eventi dei vari Listener;

Se hai qualche sospetto su qualche pezzo di codice, specie per i Listener, non aprire un altro thread (nn c'è n'è veramente bisogno) ma posta qui sotto, io quando e per quello che posso ti do una mano volentieri.
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione HONOR Magic 8 Pro: ecco il primo TOP del 2026! L...
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata Insta360 Link 2 Pro e 2C Pro: le webcam 4K che t...
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza Motorola edge 70: lo smartphone ultrasottile che...
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026 Display, mini PC, periferiche e networking: le n...
Le novità ASUS per il 2026 nel settore dei PC desktop Le novità ASUS per il 2026 nel settore de...
The Sims entra in una nuova era, ma l'ac...
Netflix, Disney o Prime Video: qual &egr...
Perplexity blocca la generazione di imma...
Iliad rilancia Giga 200 e Giga 250 al po...
Apre un nuovo hub di ricarica Electra pr...
Windows 11, il primo aggiornamento del 2...
L'odiata interfaccia utente di Windows 8...
Apple, Xiaomi, Motorola, Google e vivo: ...
Robot aspirapolvere a metà prezzo: Amazo...
L'AI distruggerà milioni di posti di lav...
Gli obbligazionisti di Oracle intentano ...
Amazon scatenata: robot aspirapolvere, s...
007 First Light, requisiti sbagliati: IO...
Il secondo leasing sociale francese ragg...
Anche Chrome diventerà un browser...
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: 16:55.


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