Visualizzazione dei risultati da 1 a 10 su 33

Visualizzazione discussione

  1. #3
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Non rendere le cose più complicate del necessario .... Mai sentito di dover calcolare il ramo più "lungo" di un albero per fare una GUI ...

    Dovresti anche precisare (non l'hai fatto qui, né mi pare nelle altre discussioni aperte di recente) COME hai rappresentato la gerarchia dei componenti. XML? JSON? Un file di testo con tua struttura fatta-in-casa? Un DSL? Una base dati? Altro?


    , no, cioè non è detto. In Swing non c'è la necessità obbligatoria di creare i componenti "padre" prima dei componenti "figli", né il contrario. In altri framework GUI invece è diverso. Ad esempio in SWT (il framework GUI fatto dalla Eclipse Foundation e usato anche da Eclipse), ogni componente deve ricevere nel costruttore il componente "padre". In SWT, Button e Label hanno i costruttori:

    public Button(Composite parent, int style)
    public Label(Composite parent, int style)

    Lì infatti è obbligatorio creare prima il parent. Ma in Swing no.


    Che se chiarisci una volta per tutte come hai rappresentato la gerarchia, è meglio.
    Questo è il file di configurazione:

    codice:
    [BEGIN-GENERAL] 
    
                    //Proprietà comuni a tutti gli oggetti:
    
                    [SET-COMMON-PROPERTIES=1]:
    
                            Layout(#null#);
                            Visible(#true#);
    
                    [SET-COMMON-PROPERTIES=0].
                   
    [END-GENERAL]
    
    
    
    [BEGIN-ALL-OBJECTS]
    
        
        [JFRAMES=1]
    
                    [FRAME=1].[INDEX=#0#] 
                                        
                                      [SET-COMMON-PROPERTIES=1]:
    
                                            Name(#MainFrame1#);
                                            Bounds(#0, 0, 800, 600#);
                                            Visible(#true#);
    
                                      [SET-COMMON-PROPERTIES=0].
                                       
                                      [SET-BASE-PROPERTIES=1]:
                                           
                                            Parent(#null, null#);
                                            CenterRelativeToParent(#true, true#).
                                      
                                      [SET-BASE-PROPERTIES=0].
    
                    [FRAME=0].[INDEX=#0#]
    
    
    
    
        [JFRAMES=0]
    
        [CONTAINERS=1]
    
           
                    [CONTAINER=1].[INDEX=#0#] 
                                        
                                      [SET-COMMON-PROPERTIES=1]:
    
                                            Name(#MainContainer#);
                                            Bounds(#0, 0, 800, 600#).
    
                                      [SET-COMMON-PROPERTIES=0].
                                       
                                      [SET-BASE-PROPERTIES=1]:
                                      
                                            Parent(#FRAME, MainFrame1#);
                                            CenterRelativeToParent(#true, true#).
                                      
                                      [SET-BASE-PROPERTIES=0].
    
                    [CONTAINER=0].[INDEX=#0#] 
            
        [CONTAINERS=0] 
                         
        [JPANELS=1]
    
          
                    [PANEL=1].[INDEX=#0#] 
                                        
                                      [SET-COMMON-PROPERTIES=1]:
    
                                            Name(#MainPanel#);
                                            Bounds(#10, 10, 400, 400#).
    
                                      [SET-COMMON-PROPERTIES=0].
                                       
                                      [SET-BASE-PROPERTIES=1]:
                                      
                                            Parent(#CONTAINER, MainContainer#);
                                            CenterRelativeToParent(#true, true#).
                                      
                                      [SET-BASE-PROPERTIES=0].
    
                    [PANEL=0].[INDEX=#0#]
    
        [JPANELS=0] 
    
     
    
    [END-ALL-OBJECTS]
    Per la creazione dinamica dei componenti uso:

    codice:
    Class classX = Class.forName(fullClassName);
    
    Constructor constr = classX.getDeclaredConstructor();
    
    constr.setAccessible(true);
    
                Component c = (Component) constr.newInstance();
    
    
    L'unica accortezza, allora, sarà di rendere visibile il componente PADRE solo dopo aver creato e aggiunto il FIGLIO? Oppure lo mostra comunque?
    Ultima modifica di jabjoint; 11-03-2025 a 08:06
    jabjoint

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.