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

    Problemi con lo sfondo ad un JPanel

    Salve a tutti, so che questa discussione è stata già ampiamente trattata in questa sezione, ma c'è un qualcosa di bizzarro che nn mi resco a spiegare..spero mi possiate essere d'aiuto.
    Praticamente dovrei inserire al mio JFrame a cui ho legato un Jpanel e dei pulsanti, uno sfondo al JPanel. Vedendo le varie discussioni, sono riuscito a fare ciò, ma la stranezza consiste nel fatto che quando avvio il mio frame contentente il panel e l'immagine, mi appare solo quest' ultima, infatti i pulsanti "apparentemente non si vedono", poi passandoci sopra la finestra il cursore del mouse, ecco che appaiono improvvisamente ? Sapreste aiutarmi ??
    vi posto il codice della mia classe che estende JPanel

    codice:
    import java.awt.Dimension;
    import java.awt.Graphics;
    import java.awt.Image;
    import javax.swing.ImageIcon;
    import javax.swing.JPanel;
    
    class ImagePanel extends JPanel {
    
      private Image img;
    
      public ImagePanel(String img) 
      {
        this(new ImageIcon(img).getImage());
      }
    
      public ImagePanel(Image img) {
        this.img = img;
        Dimension size = new Dimension(img.getWidth(null), img.getHeight(null));
        
    
        /*setPreferredSize(size); // originale
        setMinimumSize(size);
        setMaximumSize(size);
        setSize(size);
        setLayout(null);*/
        setSize(700, 400); // questo settaggio l'ho creato io per adattarlo al mio frame
      }
    
      public void paintComponent(Graphics g) 
      {
          //g.drawImage(img, 0, 0, null);
          Dimension dimensione = getSize();// definiamo le dimensioni dell' immagine nello schermo 
          g.drawImage(img, 0, 0, dimensione.width, dimensione.height, null);
      }
    lo richiamo nel Frame subito dopo il setTitle con la chiamata:

    codice:
    ImagePanel panel = new ImagePanel(new ImageIcon("percorso");
    getContentPane().add(panel);

  2. #2
    ho fatto un casino con i CODE scusate :P

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Originariamente inviato da Smoker93
    ho fatto un casino con i CODE scusate :P
    Ho notato e ho corretto... hai praticamente invertito il tag di apertura [CODE] col tag di chiusura [/CODE].


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  4. #4
    Sapresti aiutarmi ??

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,328
    Bisognerebbe vedere il resto del codice (quello dove crei ed aggiungi il pannello), ovvero il modo in cui definisci il LayoutManager che usi nel contenitore.

    Ad occhio, a parte delle cose inutili come il settaggio delle dimensioni per poi sovrascriverle con valori fissi, non mi pare di vedere errori in quel codice.

    Certo, manca una cosa che è piuttosto importante (ma che non dovrebbe influire in questo caso): la prima riga del paintComponent() dovrebbe richiamare il paintComponent() della classe madre:

    codice:
    @Override
    public void paintComponent(Graphics g) {
       super.paintComponent( g );
       ...
    }

    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  6. #6
    Questo è il Frame principale
    codice:
    public class Frame extends JFrame 
    {       
         private ImageIcon icona = new ImageIcon("C:/Users/pc/Desktop/Progetto/specificheProgetto_GF4/icona.jpg"); // cambiare l'icona
           
        //JScrollPane pannello;
        public Frame()
                {
                    inizia();
                }
        
        public void inizia()
        {
            setTitle("Frame"); // titolo della classe
            ImagePanel panel = new ImagePanel(new ImageIcon("C:/Users/pc/Desktop/Progetto/specificheProgetto_GF4/SfondoScreen.jpg").getImage());
            getContentPane().add(panel);
            
            setLookAndFeel(); // definiamo il LAF 
            setIconImage(icona.getImage());
            
            setSize(700, 400);
            
            setLocationRelativeTo(null);
            
            
            setResizable(false);        
            HomePage home = new HomePage();        
            add(home);     
            
            // come chiudiamo la finestra:
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            
            
        }
           
        private void setLookAndFeel()  // definisce l'aspetto della finestra
        {
            try
            {
                for(UIManager.LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) // indaghiamo su tutti i lookAndFeel installati recuperabili grazie alla classe UIMAnager
                {
                    if("Nimbus".equals(info.getName())) // vediamo se c'è Nimbus
                    {
                        UIManager.setLookAndFeel(info.getClassName());
                        break; // arrestiamo il ciclo una volta trovato
                    }
                }
            } catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex)
            {
                System.out.println("!!!! Attenzione Nimbus non ha avuto successo");
                System.err.println(ex); // ci facciamo scrivere il report delle ecezioni
            }
        }
        
        /**
         * verifichiamo funzionamento della classe appena creata
         * @param args
         */
        public static void main(String[] args) 
        { 
               Frame x = new Frame();
                x.setVisible(true);      
        }
    }
    Questo è il JPanel
    codice:
    public class HomePage extends JPanel {
        
        private JButton NuovaPartita;
        private JButton Help;
        private JButton Classifica;
        private JButton Esci;
        
        public HomePage() 
        {
            pulsanti();
        }
    
        
        @SuppressWarnings("unchecked")
        
        private void pulsanti() 
        {
            
            NuovaPartita = new JButton("Nuova Partita");
            NuovaPartita.setToolTipText("Inizia una nuova partita");
            
            
            Help = new JButton("Help");
            Help.setToolTipText("Come si gioca");
            
            
            Classifica = new JButton("Classifica");
            Classifica.setToolTipText("Guarda i migliori risultati");
            
            
            Esci = new JButton("Esci");
            Esci.setToolTipText("Esci dal gioco");
           
            
            //dimensioni del pannello
            setPreferredSize(new java.awt.Dimension(700, 400));
    
           
            //posizione del pannello
            javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
            this.setLayout(layout);
            layout.setHorizontalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                        .addGroup(layout.createSequentialGroup()
                            .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(Esci, javax.swing.GroupLayout.PREFERRED_SIZE, 114, javax.swing.GroupLayout.PREFERRED_SIZE))
                        .addGroup(layout.createSequentialGroup()
                            .addGap(74, 74, 74)
                            .addComponent(NuovaPartita, javax.swing.GroupLayout.PREFERRED_SIZE, 168, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 216, Short.MAX_VALUE)
                            .addComponent(Classifica, javax.swing.GroupLayout.PREFERRED_SIZE, 168, javax.swing.GroupLayout.PREFERRED_SIZE)))
                    .addGap(74, 74, 74))
                .addGroup(layout.createSequentialGroup()
                    .addGap(266, 266, 266)
                    .addComponent(Help, javax.swing.GroupLayout.PREFERRED_SIZE, 168, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
            );
            layout.setVerticalGroup(
                layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                .addGroup(layout.createSequentialGroup()
                    .addGap(48, 48, 48)
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                        .addComponent(NuovaPartita, javax.swing.GroupLayout.PREFERRED_SIZE, 76, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addComponent(Classifica, javax.swing.GroupLayout.PREFERRED_SIZE, 76, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                    .addComponent(Help, javax.swing.GroupLayout.PREFERRED_SIZE, 76, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 126, Short.MAX_VALUE)
                    .addComponent(Esci, javax.swing.GroupLayout.PREFERRED_SIZE, 45, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addGap(23, 23, 23))
            );
        }// </editor-fold>
        
            
            
    }

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.