E' possibile chiudere più di un jframe visualizzati sul monitor con un solo bottone?
E' possibile chiudere più di un jframe visualizzati sul monitor con un solo bottone?
Fai in sequenza N setVisible(false) o N dispose() (se vuoi rilasciare tutte le risorse e non solo nasconderli) sui vari frame, in risposta al click sul pulsante.Originariamente inviato da jurij7
E' possibile chiudere più di un jframe visualizzati sul monitor con un solo bottone?
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Per tutti i jinternalframe aperti ho fatto questo :
private void ChiudiTuttoActionPerformed(java.awt.event.ActionEv ent evt) {
JInternalFrame frame[] = jDesktopPane1.getAllFrames();
int confirm;
if (frame.length!=0){
confirm = JOptionPane.showConfirmDialog(this,
"Attenzione!!!\r\n" +
"Tutti i contenuti non salvati andranno persi!\r\n" +
"Vuoi chiudere tutte le finestre aperte?",
"Chiudi tutte le finestre",
JOptionPane.YES_NO_OPTION,
JOptionPane.QUESTION_MESSAGE);
}else......
Come faccio a chiudere con questo stesso anche tutti i jframe aperti ?
Ma in che senso N setvisible(false) io vorrei tipo che con un bottone chiuedo tutti i JFrame che ho aperto sino a quel momento
E' possibile fare una cosa di questo tipo?
Il fatto è che per i JFrame (e altri contenitori "top-level") non c'è un array a tua disposizione .... devi farlo tu. Ogni volta che apri un JFrame, lo aggiungi ad una collezione o array (meglio la collezione) e quando lo chiudi, lo rimuovi dalla collezione.Originariamente inviato da jurij7
Come faccio a chiudere con questo stesso anche tutti i jframe aperti ?
Una volta che hai l'array dei JInternalFrame e la collezione di JFrame, puoi iterare su queste e fare un dispose() su ognuno. Molto semplice, no?
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Vabbè non ho capito
Fa nulla
Mi sono ricordato adesso che in effetti ci sono dei metodi che forniscono indicazioni sulle finestre aperte dalla applicazione:Originariamente inviato da jurij7
Vabbè non ho capito
nella classe java.awt.Frame:
public static Frame[] getFrames()
(da Java 1.2 in poi)
e
nella classe java.awt.Window
public static Window[] getWindows()
(da Java 6 in poi)
L'unica questione è che questi metodi posso anche ritornare i riferimenti a finestre create dal sistema es. una "print dialog" se è stata invocata dalla applicazione o finestre nascoste usate da Swing.
Quindi potresti sapere tranquillamente quali sono tutti i frame esterni che hai aperto. E se i tuoi frame sono di una "tua" classe che estende JFrame, allora puoi anche "filtrarli" tramite un test di instanceof.
Visto che probabilmente non ti sarà chiaro, lo spiego meglio: visto che nell'array ritornato ci possono essere anche "altre" finestre che non ti interessano e che non devi toccare (visto che vuoi chiuderle!) basta fare un test con l'operatore instanceof per sapere se l'oggetto è della tua classe.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Forse opto per un'altra soluzione piu semplice
cioè quando c'è bisogno di chiudere i JFrame metti un joptionPane che chiede di chiudere tutte le finestre visualizzate prima di ricominciare l'esecuzione
Un po semplice ma credo efficace
Piuttosto Andbin, la cosa che mi interessa molto seriamente è quella relativa al fatto di cambiare i dati alfanumerici all'interno di una JTextArea selezionando con il doppio click del mouse il dato che voglio cambiare.
Ho notato che facendo doppioclick il dato viene selezionato (evidenziato) poi come dovrei prosguire?
Questi dati ora come ora li cambiao tramite un jbutton che apre una jdialog dove posso cambiare i dati invece io vorrei elimiare questa jdialog e cambiarli direttamente nella jtextarea
Come posso fare ? Avevamo iniziato il discorso mi pare ma non avevo capito cosa fare
Puoi aiutarmi ?
Ma il problema non è quello di chiedere all'utente la conferma della chiusura! .... la questione, nel tuo caso specifico, è sapere quali sono tutti i JInternalFrame e i JFrame da chiudere! Per i JInternalFrame è semplice e immediato .... c'è il metodo getAllFrames() di JDesktopPane, tutti i frame forniti nell'array sono quelli validi da chiudere. Per i JFrame, come ho evidenziato sopra, c'è il metodo getFrames() di Frame che però può fornire anche altre finestre non di tuo interesse. Quindi basta solo controllare che il frame sia veramente uno della tua classe.Originariamente inviato da jurij7
cioè quando c'è bisogno di chiudere i JFrame metti un joptionPane che chiede di chiudere tutte le finestre visualizzate prima di ricominciare l'esecuzione
Ma te l'avevo già spiegato quiOriginariamente inviato da jurij7
la cosa che mi interessa molto seriamente è quella relativa al fatto di cambiare i dati alfanumerici all'interno di una JTextArea selezionando con il doppio click del mouse il dato che voglio cambiare.
Ho notato che facendo doppioclick il dato viene selezionato (evidenziato) poi come dovrei prosguire?
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Quindi dovrei inserire
JFrame1 frame[] = Frame.getFrames();
Nel codice che ti ho fatto vedere sopra?
P.S. Comunque i JFrame aperti dovrei chiderli tutti quindi non c'è il problema si selezionare quali tenere aperti o meno.
Per quanto riguarda la seconda questio ho aggiunto un evento alla JTextArea quindi ora ho:
private void jTextArea4MouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
}
Ma non so cosa scrivere per fare quello che desidero
Ti prego aiutami, perchè fatte queste 2 cose avrei finito