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

    Riferimento JFrame a JDesktopPane

    Salve..

    All'interno della mia classe MyFrame, che estende da JFrame, creo ed aggiungo un classe che estende JDesktopPane.

    es:

    codice:
    public MyFrame extends JFrame{
    
    JDesktopPaneMenu menu;
    
    public MyFrame(){
    
    menu= new JDesktopPaneMenu();
    this.add(menu);
    }
    
    //---Classe JDesktopPanelMenu---
    public JDesktopPaneMenu extends JDesktopPane{
    
    JInternalFrame internalFrame;
    
    public JDesktopPanelMenu(){
    
    //creo l'internal frame.. e poi lo aggiungo alla classe..
    
    }
    
    }
    Ora, attraverso questa gerarchia di chiamate, perchè dalla classe JDesktopPanel non posso avere il riferimento al Frame che lo ha invocato?

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    Java ha un forum tutto per se... si chiama "Java".

    Sposto.


    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

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Re: Riferimento JFrame a JDesktoFrame

    Originariamente inviato da stprogramming
    Ora, attraverso questa gerarchia di chiamate, perchè dalla classe JDesktopPanel non posso avere il riferimento al Frame che lo ha invocato?
    Perchè, per la sua costruzione, non è necessario avere per forza un JFrame.

    codice:
    import javax.swing.*;
    
    public class Test {
       public static void main(String[] args) {
          JDesktopPane jdp = new JDesktopPane();
       }
    }
    Qual è il JFrame che lo ha creato? Risposta... nessuno.

    Passo in più: nessuno ti vieta di estendere JDesktopPane in modo da avere una classe che "richiede" di avere un riferimento al JFrame in cui esso sarà contenuto, ma di base un JDesktopPane può essere costruito senza che vi sia alcun JFrame in cui contenerlo.


    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
    Perdonami per l'errore.

  5. #5
    Quindi se dal main, invoco direttamente il desktoppane senza dover prima invocare il JFrame, il contenuto del DesktopPane sarà visualizzato ugualmente!!

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Rileggendo per bene vedo che già estendi JDesktopPane... bene, crea il costruttore in modo che richieda il riferimento al JFrame, salvati questo riferimento e hai risolto.

    codice:
    public class JDesktopPaneMenu extends JDeaktopPane {
       ...
       private JFrame frmContainer;
       ...
       public JDesktopPaneMenu(JFrame frmContainer) {
          this.frmContainer = frmContainer;
          ...
       }
       ...
    }

    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

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da stprogramming
    Quindi se dal main, invoco direttamente il desktoppane senza dover prima invocare il JFrame, il contenuto del DesktopPane sarà visualizzato ugualmente!!
    Ovviamente no. Ma nessuno ti vieta di creare (in memoria) un oggetto JDesktopPane non associato a nulla. Il JFrame su cui visualizzarlo non è un requisito necessario, quindi non c'è alcun riferimento ad esso.


    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

  8. #8
    Ho fatto già questa tipologia di sorgente, ma il frame che ha invocato il DesktopPane non viene riconosciuto da nessuna parte..Ossia, la classe MyFrame non esiste proprio..

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Originariamente inviato da stprogramming
    Ho fatto già questa tipologia di sorgente, ma il frame che ha invocato il DesktopPane non viene riconosciuto da nessuna parte..Ossia, la classe MyFrame non esiste proprio..
    Eh? Il mio era un esempio... se necessiti di accedere a metodi "particolari" della tua classe, chiaramente non dovrai avere un oggetto JFrame, ma un oggetto MyFrame:

    codice:
    public class JDesktopPaneMenu extends JDeaktopPane {
       ...
       private MyFrame frmContainer;
       ...
       public JDesktopPaneMenu(MyFrame frmContainer) {
          this.frmContainer = frmContainer;
          ...
       }
       ...
       // Posso invocare tutti i metodi della classe MyFrame
       // sull'oggetto frmContainer
    }
    La costruzione, ovviamente, vuole un riferimento al frame:

    codice:
    ...
    public MyFrame() {
       ...
       menu= new JDesktopPaneMenu( this );
       ...
    }

    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

  10. #10
    In effetti è giusto come dice Lei..
    Solo che non me lo fa fare!!

    Praticamente se invio il riferimento del MyFrame a DesktopPane, come mi ha detto Lei, il riferimento MyFrame non viene proprio riconosciuto..Il compilatore mi chiede di Creare la classe MyFrame...

    Questa cosa mi sembra proprio assurdo!!

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.