Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Spostare oggetti in un pannello

    Salve ragazzi


    Qualcuno mi potrebbe spiegare perchè quando aggiungo gli degli oggetti in un pannello vengono predisposti automaticamente senza poterli spostare?

    Adesso vi faccio un esempio di come faccio io
    .....
    //dichiarazioni oggetti
    .......
    .......
    nel pannello che estende la classe JPanel

    costruttore{
    vai = new JButton ("VAI");
    label = new JLabel("SCEGLI L'OPZIONE DESIDERATA");
    op1 = new JRadioButton("Crea");
    op2 = new JRadioButton("Aggiungi");
    op3 = new JRadioButton("Calcola");

    add(label);
    add(op1);
    add(op2);
    add(op3);

    .......
    .......
    .......

    }
    }

    dopo questo se eseguo il codice vedo i mie oggetti sul frame che contiene questo pannello in ordine di inserimento.

    Adesso volevo capire se ad esempio voglio mettere il JButton "vai" nella posizione 100,200

    perchè non funziona in questo modo?
    vai.setLocation(100, 200);
    e rimane sempre nella stessa posizione?


    GRAZIE!!!
    Agos

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Spostare oggetti in un pannello

    Originariamente inviato da agostinomiranda
    perchè non funziona in questo modo?
    Nella realizzazione delle interfacce grafiche in AWT/Swing è (buona) prassi comune usare i "layout manager". Sono delle classi apposite che si occupano di posizionare/dimensionare automaticamente i componenti secondo criteri e algoritmi specifici per ogni layout manager.

    Usare un layout manager ha diversi benefici: non ci si deve preoccupare di codificare esplicitamente posizione/dimensione dei componenti e si rende la interfaccia indipendente dalla piattaforma, dai font di caratteri usati, dal look & feel impostato ecc... Non solo ma basandosi sui criteri di un certo layout manager la interfaccia è in grado di adattarsi ad eventuali ridimensionamenti del "contenitore" che contiene i componenti.

    Non usare un layout manager è possibile, si invoca setLayout(null) sul container. Ma a quel punto si apre la strada del posizionamento assoluto. Ogni componente va posizionato/dimensionato esplicitamente. Perdendo tutti i vantaggi detti prima.

    Vedere: Laying Out Components Within a Container
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Ok capito

    Ho trovato anche un'altra guida in italiano

    http://www.javastaff.com/article.php...60916232037944
    Agos

  4. #4
    Ne ho trovato ancora un'altra più leggibile appartenente a questo sito


    http://java.html.it/guide/lezione/76...ne-dei-layout/
    Agos

  5. #5
    Ragazzi niente da fare



    Non è quelo che volevo
    infatti le tre classi

    GridLayout, FlowLayout e borderLayout

    non mi permettodo di inserire gli oggetti come ho spiegato nel messaggio iniziale
    Agos

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da agostinomiranda
    Non è quelo che volevo
    infatti le tre classi

    GridLayout, FlowLayout e borderLayout

    non mi permettodo di inserire gli oggetti come ho spiegato nel messaggio iniziale
    Innanzitutto i 3 che hai menzionato non sono gli unici layout manager ... ce ne sono diversi altri, anche più "avanzati" e flessibili. Comunque quando si progetta una interfaccia utente non è che devi scartare immediatamente un layout manager solo perché magari vedendo la spiegazione/struttura su un tutorial non è esattamente ciò che vuoi.
    Nessun layout manager, da solo, è perfetto o adatto per qualsiasi interfaccia utente.

    Le interfacce utente si possono comporre in modo più articolato usando anche più pannelli e più layout manager in modo combinato, usando un po' la tecnica delle "scatole cinesi". Si può partire ad esempio con il content-pane di un JFrame in cui si imposta un BoxLayout verticale in cui, sempre ad esempio, certi elementi sono dei JPanel con un altro layout manager che contiene altri componenti, ecc....

    Quindi prima di scartare i vari layout manager o focalizzarti solo su pensieri del tipo "voglio il componente alla tal posizione esatta", cerca di studiare meglio la interfaccia utente in termini di aree occupate e relazioni tra i componenti.

    Fin dall'inizio della discussione, detto sinceramente, non si è ancora capito bene che cosa vuoi fare di preciso. Prova a spiegare a parole la struttura della tua interfaccia utente. Prova a dire cose del tipo: "nella parte in basso del JFrame vorrei una fila orizzontale di pulsanti .... nella parte centrale vorrei il componente XYZ che possa occupare tutto lo spazio rimanente ecc...". Cose di questo tipo ....
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Forse ho capito


    Quindi la tecnica è di utilizzare più pannelli con layout di componenti diversi.

    Adesso le studio un po meglio e ti farò sapere


    GRAZIE per la spiegazione!!!
    Agos

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.