Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    216

    [Java] Elementi grafici non si sovrappongono

    public class WalkingDrunk
    {
    /**
    Crea una Grid e vi fa camminare un ubriaco, valutando alla fine la distanza percorsa. Il tutto visualizzato in un frame
    */
    public static void main(String[] args)
    {
    JFrame frame = new JFrame();
    frame.setTitle("A walking drunk man");
    frame.setSize(500, 500);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOS E);

    GridComponent city = new GridComponent();
    DrunkComponent drunk = new DrunkComponent();

    frame.add(drunk);
    frame.add(city);

    frame.setVisible(true);
    }
    }


    Perché in questo codice la griglia Grid e il componente DrunkComponent che disegna una serie di punti nel frame non vengono visualizzati contmeporaneamente?
    Cioè se scrivo
    frame.add(drunk);
    frame.add(city);
    vedo solo la griglia

    se scrivo
    frame.add(city);
    frame.add(drunk);
    vedo solo i puntini

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

    Re: [Java] Elementi grafici non si sovrappongono

    Originariamente inviato da raff5184
    Perché in questo codice la griglia Grid e il componente DrunkComponent che disegna una serie di punti nel frame non vengono visualizzati contmeporaneamente?
    Innanzitutto non hai impostato alcun layout manager per il content pane del JFrame. Quindi il layout manager usato di default è BorderLayout. Fare un add() senza specificare un "constraint" è come se tu avessi fatto:

    frame.add(drunk,BorderLayout.CENTER);
    frame.add(city,BorderLayout.CENTER);

    Quindi dal momento che nella area CENTER (come nelle altre 4 aree del BorderLayout) ci può stare solo 1 componente visibile, allora quello visibile è l'ultimo aggiunto, cioè city.
    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 2005
    Messaggi
    216
    la mia intenzione è quella di disegnare una serie di cerchietti sulla griglia avendo due componenti separati, è possibile fare questo? O devo realizzare una classe tipo

    GridAndPointsComponent extends JComponent

    in cui disegno la griglia e i cerchietti comteporaneamente e poi inserisco questo component nel frame?

    Lo so che "manca qualche pezzo", come il Layout manager ma sono ancora ai primi argomenti di java, quindi anche il libro ancora non tratta questi argomenti

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da raff5184
    la mia intenzione è quella di disegnare una serie di cerchietti sulla griglia avendo due componenti separati, è possibile fare questo?
    I layout manager normali (es. BorderLayout, GridLayout, ecc...) organizzano i componenti in un modo tale che non siano mai sovrapposti. Anche ammesso di togliere il layout manager (setLayout(null)) ed usare il posizionamento assoluto, comunque non avresti la flessibilità per cambiare dinamicamente lo Z order, ovvero quali componenti stanno sopra o sotto (se non sbaglio dipende dall'ordine in cui sono stati aggiunti). Potresti usare un JLayeredPane, che è un componente apposito che può contenere N componenti che possono sovrapporsi e di cui si può specificare lo Z order. (in tal caso, puoi leggere il tutorial della Sun).

    Originariamente inviato da raff5184
    O devo realizzare una classe tipo

    GridAndPointsComponent extends JComponent

    in cui disegno la griglia e i cerchietti comteporaneamente e poi inserisco questo component nel frame?
    Certo, questa sarebbe la soluzione valida e completa ma dovresti gestire il painting in modo accurato e possibilmente efficiente (specialmente se qualcosa nel disegno deve "muoversi").

    Originariamente inviato da raff5184
    Lo so che "manca qualche pezzo", come il Layout manager ma sono ancora ai primi argomenti di java, quindi anche il libro ancora non tratta questi argomenti
    Ho capito .... però stai cercando di fare qualcosa, non dico di "avanzato", ma comunque non proprio basilare.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    216
    bene ti ringrazio; credo che la soluzione, per ora, è quella di creare un
    GridAndPointsComponent extends JComponent


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.