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

    [JAVA][Grafica]Sfondo su JPanel

    Ciao a tutti. Il mio problema è creare un JPanel con un'immagine come sfondo, che sia in grado di ridimensionare l'immagine senza perdere definizione. Questo è il codice che ho scritto:

    codice:
    package OrdinePaniniServer;  
    import java.awt.*; 
    import javax.swing.*;
    public class IntestationPanel extends JPanel {      
    
      private Image img;     
    
      public IntestationPanel(String pathName) { 
        //carico l'immagine        
        img = Toolkit.getDefaultToolkit().createImage(pathName+"\\index.jpg");
        loadImage(img);     
      }      
    
      private void loadImage(Image img) {         
        try {     
            //faccio in modo che il programma non avanzi finché non viene caricata l'immagine        
            MediaTracker track = new MediaTracker(this);             
            track.addImage(img, 0);             
            track.waitForID(0);         
        } catch (InterruptedException e) {             
            e.printStackTrace();         
        }     
      }  
        
      @Override     
      protected void paintComponent(Graphics g) {        
         //disegno lo sfondo         
         setOpaque(false);         
         Image img1 = img.getScaledInstance(this.getWidth(), this.getHeight(), Image.SCALE_SMOOTH);
         //JFrame f = new JFrame();                     
         //JLabel l = new JLabel(); 
         //l.setIcon(new ImageIcon(img1));                     
         //f.getContentPane().add(l);                     
         //f.setVisible(true);                     
         //f.pack();         
         g.drawImage(img1, 0, 0, this.getWidth(), this.getHeight(), null);         
         super.paintComponent(g);      
       } 
    }
    Premesso che, senza img1, quindi senza il getScaledInstance(), l'immagine viene visualizzata, ma con una perdità di qualità dovuta alla deformazione, qualcuno mi sa dire perché l'immagine non viene visualizzata nel pannello, a meno che non la mostri anche in un frame separato, come nella parte commentata del metodo paintComponent?

  2. #2
    Utente di HTML.it L'avatar di yuno
    Registrato dal
    Apr 2010
    Messaggi
    62
    ciao,potresti provare ad usare ImageIcon in un JLabel tela carica cosi comè senza fare resize
    codice:
    new ImageIcon(this.getClass().getResource("/File/immagina.gif"));

  3. #3
    Ma se la metto in una label e poi ingrandisco la finestra, l'immagine resta sempre delle stesse dimensioni, lasciando dello spazio vuoto tra la fine dell'immagine e la fine del JFrame. A me servirebbe che si allargasse isieme alla finestra

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.