Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315

    [Java] Portare in primo piano un Frame / JFrame

    Visto che il forum ha avuto problemi, riposto la mia richiesta:

    Io ho un'applicazione che a runtime crea una finestra e la visualizza. Il problema è che l'applicazione, nel momento in cui crea questa finestra, potrebbe non essere in primo piano (anzi, difficilmente sarà in primo piano), ma ci saranno altre finestre sopra di essa.

    Il problema è che la finestra che viene creata DEVE essere portata in primo piano.

    Ho usato il metodo toFront() (dopo il metodo show(), altrimenti il peer non viene creato e sarebbe alquanto inutile), che da documentazione dovrebbe portare la finestra appena creata sopra tutte le altre. Ma ciò non accade... la finestra rimane nascosta dietro tutte le altre finestre...

    Qualcuno conosce un modo per risolvere questo problema?

    Posto un po' di codice per far meglio capire cosa ho fatto...

    codice:
    public class MiaApplicazione {
    
       // metodi vari
    
       public void creaFinestra() {
          Frame f = new Frame("Runtime window");
          f.show();
          f.toFront();
       }
    
       public static void main(String [] args) {
          // fa qualcosa, attende qualche minuto...
          creaFinestra(); // dovrebbe apparire in primo piano, ma non è così :-(
       }
    }
    PS: In realtà la finestra che appare è una classe mia, per cui ho inserito anche nel suo costruttore, dopo la visualizzazione, il metodo toFront(); ma non cambia assolutamente nulla.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  2. #2
    Prova cosi'

    public static void aggiungiMaschera() {
    try{
    contentPane.remove(img); //toglie l'immagine di sfondo
    MasSimulazioneEMIS masEMIS=new MasSimulazioneEMIS(); //crea JInternalFrame
    theDesktop.add(masEMIS); //aggiunge il JInternalFrame al desktop
    masEMIS.setMaximum(true); //massimizza
    masEMIS.show(); //visualizza
    masEMIS.toFront(); //in primo piano
    }catch(Exception e){}
    }

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    Scusa... non ho ben capito cosa volevi farmi fare...

    MasSimulazioneEMIS che classe è?? Non è una classe standard, quindi probabilmente è una classe tua personalizzata...

    Ma a parte questo... io non ho nessun InternalFrame... è una finestra come le altre... (per la verità si tratta di una Window, quindi una finestra senza né bordo né barra del titolo perchè per l'applicazione che sto facendo sono inutili)...


    Se puoi spiegarti meglio, te ne sarei grato...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    MasSimulazioneEMIS e' una JInternalFrame, credevo stessi parlando di una applicazione MDI fatta a finestre ( in java si gestiscono con il JDesktopPane ). Non ho mai avuto a che fare con classi JWindow ( nel codice che posti comunque hai un Frame che comunque e' diverso da un window ) che passano in primo piano, CMQ ti ho postato codice SWING, mi sembra che tu utilizzi AWT.

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    Beh... per la verità io mi diverto anche a mischiare codice AWT con codice Swing.

    Comunque, non sto realizzando un'applicazione MDI e uso una semplice JWindow. Nel codice che ho postato ho usato un Frame (che comunque E' una Window, dal punto di vista dell'OOP), ma anche una JWindow va benissimo... tanto derivano tutte da Window...


    Grazie lo stesso...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,315
    up...
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.