Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13

Discussione: posizione jPanel

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    396

    posizione jPanel

    Ciao, non riesco a posizionare il mio pannello al centro dello schermo!
    codice:
    public class Elimina extends javax.swing.JFrame{
       private javax.swing.JPanel p;
       private Container contentPane;
    
          public Elimina(){
             setSize(1024,768);
             Color c=new Color(238,238,238,20);
             this.setBackground(c);
            
             this.setLayout(new BorderLayout());
             this.setUndecorated(true);
             p = new backgroundedPanel("/mensa/imm/pulsantiNaviga/elimSgalopp.png");
             p.setSize(200,200);
             contentPane = getContentPane();
             contentPane.add(p,BorderLayout.CENTER);
            // p.setBounds(200, 300, 200, 200);
            
         }
       }
    Sia che provo a mettere il pannello con il borderLayout sia che utilizzo il metodo più diretto setBounds(), il pannello rimane sempre in alto a sinistra, non ci pensa proprio a spostarsi.
    Dove sbaglio???

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

    Re: posizione jPanel

    Originariamente inviato da Salinas
    Sia che provo a mettere il pannello con il borderLayout sia che utilizzo il metodo più diretto setBounds(), il pannello rimane sempre in alto a sinistra, non ci pensa proprio a spostarsi.
    Dove sbaglio???
    Il tuo backgroundedPanel lo metti in un BorderLayout. setSize()/setBounds() non servono se c'è un layout manager.
    E in CENTER il backgroundedPanel occuperebbe comunque tutto lo spazio disponibile (a meno di bordi e componenti nelle altre aree).

    Cosa volevi fare? Una finestra grande come tutto schermo senza decorazioni? C'è JWindow che non presenta bordi/titolo/ecc...

    La finestra comunque la devi posizionare e dimensionare per occupare tutto lo schermo. Ed esiste getScreenSize() di Toolkit. Quindi ti basterebbe usare setLocation(0,0) e poi setSize(la_dimensione_dal_toolkit)
    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
    Jun 2008
    Messaggi
    396
    Volevo creare un frame e mettere al centro il pannello che gli aggiungo.
    Anche se non setto il layout del frame cmq la finestra me la mette in alto a sinitra, anche tramite il metodo setLocation().

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    502

    Re: posizione jPanel

    Originariamente inviato da Salinas
    Ciao, non riesco a posizionare il mio pannello al centro dello schermo!
    codice:
    public class Elimina extends javax.swing.JFrame{
       private javax.swing.JPanel p;
       private Container contentPane;
    
          public Elimina(){
             setSize(1024,768);
             Color c=new Color(238,238,238,20);
             this.setBackground(c);
            
             this.setLayout(new BorderLayout());
             this.setUndecorated(true);
             p = new backgroundedPanel("/mensa/imm/pulsantiNaviga/elimSgalopp.png");
             p.setSize(200,200);
             contentPane = getContentPane();
             contentPane.add(p,BorderLayout.CENTER);
            // p.setBounds(200, 300, 200, 200);
            
         }
       }
    Sia che provo a mettere il pannello con il borderLayout sia che utilizzo il metodo più diretto setBounds(), il pannello rimane sempre in alto a sinistra, non ci pensa proprio a spostarsi.
    Dove sbaglio???
    Ma tu vuoi che il JPanel sia centrato nel tuo JFrame, o che il tuo JFrame sia centrato sullo schermo?
    Oppure che il contenuto del tuo JPanel sia centrato nel JPanel, e poi con il JFrame, e poi con lo schermo?
    al volante son nervoso

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    396
    anche se metto così non cambia niente.
    codice:
    public class Elimina extends javax.swing.JFrame{
       private javax.swing.JPanel p;
       private Container contentPane;
    
          public Elimina(){
             setSize(1024,768);
             Color c=new Color(238,238,238,20);
             this.setBackground(c);
             this.setUndecorated(true);
             p = new backgroundedPanel("/mensa/imm/pulsantiNaviga/elimSgalopp.png");
             p.setSize(200,200);
             contentPane = getContentPane();
             contentPane.add(p);
             p.setLocation(200, 300);
            
         }
       }

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Salinas
    anche se metto così non cambia niente.
    Senti ... non è per rompere: ma non puoi spiegare meglio il criterio di posizionamento/dimensionamento??

    JFrame a tutto schermo e il backgroundedPanel che sta dimensionato al suo "preferred size" centrato nel JFrame?
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2009
    Messaggi
    502
    EDIT: cancellato perché non era la cosa richiesta
    al volante son nervoso

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    396
    JFrame a tutto schermo e il backgroundedPanel che sta dimensionato al suo "preferred size" centrato nel JFrame?
    Il jFrame ha le sue dimensioni (setSize(1024,768)) e il jPanel si, deve essere centrato nel jFrame da cui è contenuto.

    Non so me dirlo in altri modi.
    C'è un frame con le sue dimensioni settate dal setSize(), ci aggiungo con il metodo "add" un pannello e poi vorrei posizionare il pannello appena aggiunto nella posizione "setLocation(200,300)".

    Solo che quello che scrivo sembra non importare molto al mio jPanel, che comunque si mette in alto a sinistra.

  9. #9
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Salinas
    Il jFrame ha le sue dimensioni (setSize(1024,768)) e il jPanel si, deve essere centrato nel jFrame da cui è contenuto.

    Non so me dirlo in altri modi.
    C'è un frame con le sue dimensioni settate dal setSize(), ci aggiungo con il metodo "add" un pannello e poi vorrei posizionare il pannello appena aggiunto nella posizione "setLocation(200,300)".
    Se c'è un layout manager non centrano e non contano setLocation/setSize/setBounds. Punto .... e basta! Chiaro?

    Se nel JFrame l'unico componente principale deve essere il tuo backgroundedPanel (poi al suo interno ci potrebbe essere altro ma è un altro discorso ...) allora puoi fare:

    a) Togliere il layout manager dal content pane e posizionare/dimensionare il backgroundedPanel con setLocation+setSize o setBounds (qui centrano, nessun layout manager!).

    b) Mettere es. un GridBagLayout nel content pane in modo che il backgroundedPanel stia centrato e alla sua dimensione "preferita".

    c) Lasciare il BorderLayout di default del content pane e mettere in CENTER un normale JPanel con es. un GridBagLayout in modo che il backgroundedPanel a sua volta contenuto sia centrato e alla sua dimensione "preferita".
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2008
    Messaggi
    396
    Se c'è un layout manager non centrano e non contano setLocation/setSize/setBounds. Punto .... e basta! Chiaro?
    Come faccio a levare il layout manager dal jFrame?

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.