2010-01-17 21 views
6

Ci scusiamo per una domanda molto semplice, ma non sono riuscito a trovare nulla nella rete, probabilmente perché non conosco i termini giusti da cercare.finestre "bambini" di swing Java

Quando si dispone di un'applicazione desktop, ci sono molte finestre per bambini cosiddette: una per le opzioni, una per "circa" e così via. Come renderli in Java Swing (con strumenti NetBeans - opzionale)?

Finora ho appena creato un altro JFrame e sull'evento pertinente l'ho aperto nello stesso modo in cui la funzione principale viene avviata, beh, main JFrame. Ma c'è qualcosa di sbagliato in questo metodo: quando chiudo la finestra figlio tramite x nell'angolo in alto a destra, l'intero programma termina come se stessi chiudendo la finestra principale. Ciò è probabilmente dovuto al fatto che il codice generato automaticamente da NetBeans per x e I può trovarlo e modificarlo da qualche parte ... ma ho ancora la sensazione che ci debba essere un modo più semplice per aggiungere JFrames per bambini (o JPanels o qualsiasi altra cosa sia per Windows) ;)

risposta

9

... Ma c'è qualcosa che non va con questo metodo : quando la finestra figlio chiudo via x nell'angolo in alto a destra, tutto il programma termina come se stavo chiudendo finestra principale. ...

Bene, direi che sei sulla strada giusta. Basta fare in modo che non la segue per i fotogrammi bambino:

frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 

Poi la chiusura delle finestre secondarie non si spegne l'intera applicazione.

HTH! ;-)

3

vuoi dire una finestra di dialogo (vedi How to Make Dialogs) che probabilmente vuole essere modale per bloccare l'input dell'utente per tutte le altre finestre del programma (vedi An Overview of Dialogs)?

+0

Non esattamente. Intendo qualcosa come la finestra delle opzioni. Cioè Finestra delle preferenze di Firefox. A meno che non si chiami anche finestra di dialogo. – Sejanus

1

Passare alla modalità progettazione cornice -> selezionare la cornice -> nelle proprietà, l'opzione pugno. Selezionare Dispose on close.

Se non vedi gli oggetti di scena: finestre bambini Ctrl + Shift + 7 o Window (in the frame menu) -> Properties

1

Se si crea fotogrammi, non sono considerati. Non è possibile impostare un proprietario per loro come si potrebbe un JDialog. Se avete voglia di creare un altro JFrame, allora si dovrebbe impostare l'operazione di chiusura

frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); 

invece di

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

L'operazione EXIT_ON_CLOSE chiamerà System.exit (0); che terminerà la JVM. Ricorda che se il tuo JFrame principale è impostato su DISPOSE_ON_CLOSE , devi assicurarti che tutti gli altri frame siano stati eliminati correttamente, altrimenti non uscirà prima di essere stato.

+0

Grazie a tutti voi;) Peccato che non possa accettare formalmente più di una risposta, tutte sono state utili :) – Sejanus