 |
AppletTalk.com Java discussions newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
doGmaI Guest
|
Posted: Wed Feb 25, 2004 5:15 pm Post subject: [Lunghetto] Swing e interfacce utente |
|
|
Ola!,
forse non è il titolo più adeguato, ma non sapevo bene come "indicare" il
subject, cmq il problema che ho è il seguente.
Sto cercando di aggiungere un'interfaccia grafica ad un programma già
esistente. Mi sono creato tutte le mie belle finestrelle, menù & C.
Questa interfaccia andrebbe a gestire un programma "in dos", ovvero in solo
testo. Il fatto è che nel programma, ci sono dei punti in cui viene
richiesto un'input all'utente tramite delle finestre (AWT) con dei
radioButton. Il programma resta in attesa della scelta in questo punto
while (finestraScelta.getScelta() == -1) {},
così facendo non si prosegue nell'esecuzione del metodo fintanto che non
viene effettuata la scelta.
Visto che non so ancora se è possibile spezzare la sequenza di
inzializzazione del programma in vari step, ho pensato di fare la stessa
cosa anche io, ovvero nella mia finestra swing con la lista delle opzioni ho
messo lo stesso metodo getScelta che non fa altro che ritornare (tramite una
return) il valore di una variabile (che è poi l'indice del radioButton
selezionato).
Il problema è che nella finestra principale dell'interfaccia, non mi compare
nemmeno la finestra con le opzioni (pre la precisione, la finestra "main" è
un JFrame, mentre la finestra della opzioni è un JInternalFrame (per
ottenere un effetto "SDI").
Ho provato eseguendo il codice passo passo ed effettivamente arriva al loop
in cui testo continuamente il valore della scelta con getScelta, ma non ha
ancora disegnato una singola riga della finestra opzioni.
C'è qualche modo per far si che prima venga disegnata la finestra e poi si
prosegua con l'esecuzione del metodo in cui è stata creata la finestra
opzioni stessa? Oppure una qualche istruzione (tipo un DoEvents per chi
conosce VB) che dica alla JVM di non "bloccarsi" nel loop ma di eseguire
anche gli altri compiti?
Grazie in anticipo
--
(¯`·.¸_¸.·´¯`·.¸_¸.·´¯)
byZ, doGmaI
[email]dogmai (AT) despammed (DOT) com[/email]
ICQ# 170836495
(_¸.·´¯`·.¸_¸.·´¯`·.¸_)
|
|
| Back to top |
|
 |
Federico Gasperini Guest
|
Posted: Thu Feb 26, 2004 9:06 am Post subject: Re: [Lunghetto] Swing e interfacce utente |
|
|
"doGmaI" <dogmai (AT) despammed (DOT) com> ha scritto nel messaggio
news:1kldatm3grivh$.aw3jyud31npj.dlg (AT) 40tude (DOT) net...
ciao!
| Quote: | radioButton. Il programma resta in attesa della scelta in questo punto
while (finestraScelta.getScelta() == -1) {},
così facendo non si prosegue nell'esecuzione del metodo fintanto che non
viene effettuata la scelta.
|
Questo è un pessimo modo per bloccare una applicazione in attesa di input!
| Quote: | Il problema è che nella finestra principale dell'interfaccia, non mi
compare
nemmeno la finestra con le opzioni (pre la precisione, la finestra "main"
è
un JFrame, mentre la finestra della opzioni è un JInternalFrame (per
ottenere un effetto "SDI").
|
Potresti, invece, usare una JDialog modale che è bloccante,
oppure usare un protocollo con semafori usando i metodi lock()
e notify() su una variabile statica.
Federico
|
|
| Back to top |
|
 |
doGmaI Guest
|
Posted: Fri Feb 27, 2004 2:23 pm Post subject: Re: [Lunghetto] Swing e interfacce utente |
|
|
Il Thu, 26 Feb 2004 10:06:17 +0100, Federico Gasperini scrisse:
| Quote: | "doGmaI" <dogmai (AT) despammed (DOT) com> ha scritto nel messaggio
Questo è un pessimo modo per bloccare una applicazione in attesa di input!
Sono perfettamente d'accordo, ma in attesa di informazioni sul funzionamento |
dell'altro prgoramma, ho introdotto "una versione semplificata", giusto per
mantenere la massima compatibilità e non dovermi sbattere con riscritture di
parti di codice
| Quote: | Il problema è che nella finestra principale dell'interfaccia, non mi
compare
nemmeno la finestra con le opzioni (pre la precisione, la finestra "main"
è
un JFrame, mentre la finestra della opzioni è un JInternalFrame (per
ottenere un effetto "SDI").
Potresti, invece, usare una JDialog modale che è bloccante,
oppure usare un protocollo con semafori usando i metodi lock()
e notify() su una variabile statica.
Federico
Non c'è modo di mettere modale un JInternalFrame? |
--
(¯`·.¸_¸.·´¯`·.¸_¸.·´¯)
byZ, doGmaI
[email]dogmai (AT) despammed (DOT) com[/email]
ICQ# 170836495
(_¸.·´¯`·.¸_¸.·´¯`·.¸_)
|
|
| Back to top |
|
 |
Federico Gasperini Guest
|
Posted: Sat Feb 28, 2004 9:42 am Post subject: Re: [Lunghetto] Swing e interfacce utente |
|
|
"doGmaI" <dogmai (AT) despammed (DOT) com> ha scritto nel messaggio
news:2w3iy84egb4u$.15stgvrblfw6i.dlg (AT) 40tude (DOT) net...
| Quote: | Non c'è modo di mettere modale un JInternalFrame?
--
(¯`·.¸_¸.·´¯`·.¸_¸.·´¯)
byZ, doGmaI
[email]dogmai (AT) despammed (DOT) com[/email]
ICQ# 170836495
(_¸.·´¯`·.¸_¸.·´¯`·.¸_)
|
Non mi sembra...
Federico
|
|
| Back to top |
|
 |
doGmaI Guest
|
Posted: Sat Feb 28, 2004 5:33 pm Post subject: Re: [Lunghetto] Swing e interfacce utente |
|
|
Il Sat, 28 Feb 2004 10:42:21 +0100, Federico Gasperini scrisse:
| Quote: | "doGmaI" <dogmai (AT) despammed (DOT) com> ha scritto nel messaggio
news:2w3iy84egb4u$.15stgvrblfw6i.dlg (AT) 40tude (DOT) net...
Non c'è modo di mettere modale un JInternalFrame?
Non mi sembra...
|
Ed invece inserire un JDialog all'interno di un JDesktopPane come faccio con
i JInternalFrame?
--
(¯`·.¸_¸.·´¯`·.¸_¸.·´¯)
byZ, doGmaI
[email]dogmai (AT) despammed (DOT) com[/email]
ICQ# 170836495
(_¸.·´¯`·.¸_¸.·´¯`·.¸_)
|
|
| Back to top |
|
 |
Federico Gasperini Guest
|
Posted: Sun Feb 29, 2004 3:32 pm Post subject: Re: [Lunghetto] Swing e interfacce utente |
|
|
"doGmaI" <dogmai (AT) despammed (DOT) com> ha scritto nel messaggio
news:tluak7a2k5m8.lo4269eqm5l1$.dlg (AT) 40tude (DOT) net...
| Quote: |
Ed invece inserire un JDialog all'interno di un JDesktopPane come faccio
con
i JInternalFrame?
|
No, JDialog estende Window e non può essere usato come argomento per add().
Puoi estendere JInternalFrame e fare in modo che show() si blocchi fino a
che non si
verifica qualche evento:
....
private Object LOCK = new Object();
public void show()
{
super.show();
blocca();
}
public void blocca()
{
try
{
LOCK.wait();
}
catch (InterruptedException ex)
{
}
}
public void sblocca()
{
synchronized (LOCK)
{
LOCK.notify();
}
}
....
Usi sblocca nel listener che vuoi. Non l'ho provato il codice, ma a occhio
dovrebbe fermare l'esecuzione dopo show(); quindi invece di
....
while (finestraScelta.getScelta() == -1) {}
switch (finestra.getScelta())
....
avrai:
....
finestraScelta.show() // <- esecuzione bloccata
switch (finestra.getScelta())
....
oppure
....
finestraScelta.blocca() // <- esecuzione bloccata
switch (finestra.getScelta())
....
pensandoci bene, l'overload si show() è superfluo, se non
controproducente.
Federico
|
|
| Back to top |
|
 |
doGmaI Guest
|
Posted: Mon Mar 01, 2004 5:40 pm Post subject: Re: [Lunghetto] Swing e interfacce utente |
|
|
Il Sun, 29 Feb 2004 16:32:45 +0100, Federico Gasperini scrisse:
| Quote: | No, JDialog estende Window e non può essere usato come argomento per add().
Puoi estendere JInternalFrame e fare in modo che show() si blocchi fino a
che non si
verifica qualche evento:
pensandoci bene, l'overload si show() è superfluo, se non
controproducente.
Federico
Bella!, proverò questo. |
Grazie
--
(¯`·.¸_¸.·´¯`·.¸_¸.·´¯)
byZ, doGmaI
[email]dogmai (AT) despammed (DOT) com[/email]
ICQ# 170836495
(_¸.·´¯`·.¸_¸.·´¯`·.¸_)
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|