Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    JFrame - JPanel

    ciao,

    ho un problema con un frame che richiama dei pannelli:
    ho un frame principale il cui costruttore istanzia un primo pannello e lo aggiungo al frame stesso.
    FINO A QUI TUTTO OK.
    successivamente vorrei che in seguito al click di un pulsante contenuto nel pannelllo venisse chiamato un altro pannello che sostituisca quello precedento, all'interno dello stesso frame....e così via.
    Nell'actionPerformed del pulsante ho istanziato il nuovo pannello e lo ho poi aggiunto, settando a "not visible" il primo. Il risultato ovviamente non è quello che speravo: il primo pannello scompare mentre il secondo non viene visualizzato, dandomi come unico risultato il frame VUOTO!

    dove sbaglio???? javascript:void(0);
    Senza speranza

    grazie in anticipo,
    ciao

    ---SimoneRDZN---

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    dopo aver nascosto un pannello e "mostrato" l'altro, chiama validate() sul JFrame contenitore.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3

    RE

    ma come faccio ad accedere al frame all'interno del panel in cui è generato l'evento???

  4. #4
    mi spiego meglio: validate() lo devo chiamare all'interno della classe che contiene il bottone?? però come faccio a dirgli che deve essere riferito al frame? con "this" fa riferimento alla classe corrente, o sbaglio???

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    puoi sempre agire sul parent

    http://java.sun.com/j2se/1.5.0/docs/...html#getParent()

    controlla che effettivamente sia il JFrame e quindi nell'action ci metterai qualcosa del genere

    this.getParent().validate();

    validate forza il contenitore su cui è chiamato a ridisegnare il suo contenuto.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  6. #6
    ho provato ad impostare il validate() sul JFrame, ma non è cambiato nulla.
    Questo è il mio codice:

    private void avantiActionPerformed(java.awt.event.MouseEvent evt)
    {
    secondPanel p = new secondPanel();
    this.setVisible(false);
    this.getParent().add(p);
    this.getParent().validate();
    }

    ancora una volta, mi scompare il primo pannello e rimane il frame vuoto.

    Prima aggiungevo il nuovo pannello facendo this.add(p) ma ovviamente in questo modo lo aggiunge al primo pannello. quindi l'ho aggiunto al parent...ma non accade nulla.

    ho sbagliato qualcos'altro???

  7. #7
    ovviamente l'evento non è "java.awt.event.MouseEvent" ma "java.awt.event.ActionEvent"....

  8. #8
    riprovando mi sono accorto che il getParent() mi solleva l'eccezione

    "java.lang.NullPointerException".

    è come se non trovasse il JFrame contenitore.

    Il problema si verifica però solo quando vengono passati valori da un panel all'altro o quando un panel legge dei valori da un file. Cosa vuol dire??

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    this.getParent().getContentPane().add(...)
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  10. #10
    guarda, ti ringrazio per la tua disponibilità, ma il getContentPane() sul getParent() mi da errore in compilazione....ho cmq risolto il problema in un modo che molto probabilmente non sarà esattamente appropriato, ma mi risolve l'eccezione del puntatore nullo (NullPointerException): ho richiamato a ritroso il getParent() fino ad arriavre al mio frame al quale ho poi aggiunto il nuovo pannello, in questo modo:

    this.getParent().getParent().getParent().getParent ().add(<myPanel>);

    in questo modo riesco ad arrivare al JFrame principale.

    ti ringrazio ancora, non non avrei mai pensato al getParent().

    ciao,


    -------SimoneRDZN--------

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 © 2026 vBulletin Solutions, Inc. All rights reserved.