Visualizzazione dei risultati da 1 a 10 su 18

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    268
    Se non vuoi/puoi mettere il menù in ognuno dei JInternalFrame, allora devi scegliere su quale JInternalFrame operare e la cosa tipica è "quello selezionato". JDesktopPane ha il metodo getSelectedFrame().
    Fin qui ci sono arrivato
    Il tuo internal frame sarà presumibilmente (e sarebbe preferibile) una tua classe che estende JInternalFrame.
    si la mia classe estente JInternaFrame
    A quel punto fai il cast e puoi invocare metodi per ottenere dati, metodi che devi ovviamente implementare ed "esporre" in modo oculato in base a cosa rappresenta il contenuto del internal frame.
    da qui in poi tutto buio….

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da X-mac Visualizza il messaggio
    da qui in poi tutto buio….
    Ok, allora faccio un esempio (poi adatta tu in base alle tue esigenze): immagina che nel tuo internal frame stai gestendo/editando i dati di una persona (nome, cognome, indirizzo, città, ecc...) con una serie di campi.

    Ci sono tecnicamente svariate possibilità per estrarre i dati dalla tua classe:

    1) Esporre metodi che permettono di ottenere i riferimenti direttamente ai componenti, es.
    public JTextField getTextFieldNome()
    public JTextField getTextFieldCognome()
    ....

    2) Esporre metodi che permettono di ottenere i dati, es.
    public String getNome()
    public String getCognome()
    ....

    3) Esporre i dati come entità unica tramite un apposito "bean" e un singolo getter, es.
    public Persona getPersona()


    Delle 3 opzioni, la 1) è la peggiore. Per un motivo molto semplice: vai a "esporre" troppe informazioni, cioè il fatto di far sapere all'esterno che ci sono dei campi e sono di quel tipo ben preciso. E che oltretutto sarebbero manipolabili dall'esterno. Inoltre se cambia l'interfaccia grafica del tuo internal frame (es. un campo che prima era JTextField ora è JTextArea) .... impatta anche sul resto del codice.
    Le opzioni 2) e 3) sono migliori e man mano ad un livello di astrazione maggiore.
    Non sono le uniche soluzioni possibili ma sono ragionevolmente le minime che si possono fare. Se hai capito il concetto, non dovresti avere particolari problemi a individuare lo scenario che più si adatta al tuo caso.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    268
    ok, intanto grazie per la pazienza….
    vorrei adottare lo scenario 2, ossia esporre i metodi con i dati che mi servono…
    nella mia classe JInternalFrame ho creato
    
    codice:
    
       public String getIsin(){
           String Isin = jFxIsin.getText();
           return Isin;
       }
    
    però non capisco come faccio a vederla dall'action performed del mio menù….che è nel JFrame che contiene tutto...

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da X-mac Visualizza il messaggio
    però non capisco come faccio a vederla dall'action performed del mio menù….che è nel JFrame che contiene tutto...
    Se hai il riferimento al JDesktopPane (dovresti averlo o perlomeno fare in modo che sia così), usi getSelectedFrame(). Che ti fornisce come tipo "statico" un JInternalFrame. Ma tu sai che i tuoi internal frame sono della tua classe specifica che estende JInternalFrame. Quindi fai un "downcast" (che non darà problemi per via dell'assuzione appena detta) e quindi puoi invocare quei metodi che espongono i dati.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.