Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    655

    [JAVA] JInternalFrame in classe separata

    Ho un classe principale che è un form, voglio creare una classe esterna che sia il JInternalFrame della principale, il problema è che uso JBuilder e quindi non so come definire la classe esterna in modo tale che quando venga richiamata dalla principale mi instanzi Il JinternalFrame.
    Qualche suggerimento in codice?
    Grazie

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Un primo suggerimento è quello di abbandonare l'interfaccia grafica di JBuilder: utilizzalo solo come editor (come faccio io). Infatti non ci sono assolutamente problemi nell'avere una classe per ciascun oggetto (anzi, Java incoraggia questo tipo di programmazione). L'importante è che la classe che estende JInternalFrame sia nella stessa cartella dell'altra, oppure in un package linkato dall'altra. Non vedo dove sia il problema, se non quello portato dall'utilizzo di ambienti di tipo RAD: questi non insegnano a programmare, né tantomento, facilitano la programmazione.


    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
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    655
    Allora ho creato la classe esterna
    codice:
    public class internalFrame
    {
    	internalFrame ()
    	 {
    	  JDesktopPane jDesktopPane = new JDesktopPane();
    	  JInternalFrame jInternalFrame = new JInternalFrame("Nuovo ",true,true,true,true);
    	jInternalFrame.setSize(200,200);
    	jInternalFrame.setVisible(true);
    	jDesktopPane.add(jInternalFrame);
             }	
    				
    }
    Il problema è che JDesktopPane appartiene all'altra classe quindi se non lo definisco in questa mi da errore, ma cosi non mi funziona

  4. #4
    Passalo come parametro...
    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    655
    Grazie mille!!

  6. #6
    Prego...
    Alternativamente, puoi lasciare questa:

    codice:
    jDesktopPane.add(jInternalFrame);
    dall'"altra parte"!

    Folle e' l'uomo che parla alla luna.
    Stolto chi non le presta ascolto.

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    E perchè non estendere direttamente JInternalFrame, così da poterla modellare a piacimento senza problemi, in questo modo?
    codice:
    public class MioInternalFrame extends JInternalFrame {
       // Qui definisco tutta la finestra interna
    }
    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
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    655
    E perchè non estendere direttamente JInternalFrame, così da poterla modellare a piacimento senza problemi, in questo modo?
    Non riesco a capire il vantaggio che ne trarrei.

  9. #9
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    OTterresti la possibilità di avere una classe da manipolare singolarmente, da poter modellare e, soprattutto, da poter utilizzare come se fosse un JInternalFrame. In effetti è un JInternalFrame, quindi puoi far riferimento ad essa e a tutti i metodi della classe JInternalFrame.

    La programmazione Object Oriented si basa proprio su questo.

    Se tu procedi nel tuo modo, ogni volta che dovrai aggiungere qualcosa al tuo JInternalFrame dovrai agire sull'oggetto appena creato, mentre se hai una classe, la puoi manipolare come vuoi. Ti faccio un esempio. Supponiamo che tu voglia aggiungere dei pulsanti che dovranno agire sul JInternalFrame stesso:
    codice:
    public class MioFrame extends JInternalFrame implements ActionListener {
       private JButton jb;
       public MioFrame() {
          jb = new JButton("Pulsante");
          jb.addActionListener(this);
          getContentPane().add(jb);
       }
    
       public void actionPerformed(ActionEvent ae) {
          ... // Faccio ciò che devo fare col pulsante
       }
    }
    In questo modo, la tua finestra rimane un oggetto a se stante. Se, invece, procedi con la tua situazione, dovrai creare esternamente i pulsanti, aggiungerli, creare esternamente degli ActionListener per gestirli, e tutto ciò che riguarda solo il JInternalFrame lo dovrai creare e gestire all'esterno. Questo si traduce in possibilità di interferenze da parte di oggetti esterni.


    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
    Utente di HTML.it
    Registrato dal
    Jul 2002
    Messaggi
    655
    Grazie ancora, penso che ti chiederò ancora tante cose...

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