Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Java: Problema JInternalFrame

    Buongiorno,

    Ho un problema con dei JInternalFrame.

    Ho creato un applicazione, con il suo JDesktopPane e i suoi JInternalFrame all'interno della sua finestra.

    Uno di questi JInternalFrame ha dei bottoni che mi aprono altre finestre JInternalFrame, solo che mi succede una cosa strana, quando clicco il bottone e mi crea la JinternalFrame "figlia", questa mi si crea sotto quella di cui ho schiacciato il bottone, in qualche modo il focus appartiene sempre alla finestra padre.

    Come posso fare a farmi spuntare la finestra creare sopra quella "padre"?

    Spero di essermi spiegato bene.

    Grazie in anticipo per ogni aiuto/consiglio.
    Ciao.
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Forse hai sbagliato ad indicare il parent di quella finestra, o magari non lo hai messo proprio... Senza vedere il codice possiamo solo tirare a indovinare...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Java: Problema JInternalFrame

    Originariamente inviato da schumy2000
    Come posso fare a farmi spuntare la finestra creare sopra quella "padre"?
    Hai fatto il setSelected(true) sul frame??

    L'esempio di createFrame() che c'è qui descrive l'approccio corretto.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  4. #4
    codice:
    UploadingScorers us=new UploadingScorers(filmpartita, dim);
    us.setVisible(true);
    superForm.getDesktop().add(us);
    codice:
    	
           public UploadingScorers(Risultato partita, java.awt.Dimension d) {
    		
    		super("Marcatori",
                      false, //resizable
                      true, //closable
                      false, //maximizable
                      true);//iconifiable
    
    		this.partita=partita;
    		DeleteScoresMatch(this.partita);
    		initGUI();
    		this.setPreferredSize(new java.awt.Dimension(446,340));
    		centraInternalFrame(d);
    		pack();
                    try{
    			setSelected(true);
    		}
    		catch(java.beans.PropertyVetoException pvex){
    			pvex.printStackTrace();
    		}
    		
    	}
    	
    	private void centraInternalFrame(java.awt.Dimension dim){
    		// Prendo le dimensioni del desktop
    		java.awt.Dimension dim_schermo = dim;
    
    		// Calcolo la posizione orizzontale della finestra
    		int posX = (int) (dim_schermo.width - this.getPreferredSize().width)/2;
    
    		// Calcolo la posizione verticale della finestra
    		int posY = (int) (dim_schermo.height - this.getPreferredSize().height)/2;
    
    		// Posiziono la finestra
    		setLocation(posX, posY);
    		this.setFocusable(true);
    	}
    	
    	
    
    	private void initGUI() {
              //DOVE DISEGNO L'INTERFACCIA
           }
    Ho provato col setSelected(true) come puoi vedere ma non va...
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da schumy2000
    Ho provato col setSelected(true) come puoi vedere ma non va...
    Meglio se lo fai per ultimo .... quello che hai fatto differisce, come sequenza, da quanto mostrato nel tutorial.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    ma E' per ultimo...se segui il filo logico della classe è messo come ultimo...
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da schumy2000
    ma E' per ultimo...se segui il filo logico della classe è messo come ultimo...
    No, prima invochi il costruttore (e lì c'è il setSelected), poi nell'altra parte (una volta ottenuto l'oggetto) fai setVisible+desktop.add

    Per esperienza personale, affinché il nuovo internal-frame stia già da subito "sopra", ci sono sequenze che funzionano e altre no. Quelle che non funzionano (cioè il frame resta "sotto") sono quelle in cui il desktop.add è l'ultima operazione.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    Hai perfettamente ragione.
    Però non pensavo che l'inversione di righe avrebbe dato questo problema, alla fine non faccio altro che includere la finestra nel JDesktopPane...

    Grazie mille.
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.