JPanel con sfondo immagine

di Anonimizzato5198 il
4 risposte
Salve a tutti, mi sono appena iscritta al forum...Ho un problema...vorrei creare una jframe che abbia un'immagine di sfondo...fin qui nessun problema...A questa finestra vorrei aggiungere dei pulsanti, delle label e cosi' via... Riesco anche ad aggiungere questi componenti ma non me li posiziona nel punto che vorrei, perchè io li vorrei al centro... Forse dovrei aggiungere un altro jPanel e a questo aggiungere i componeti... ma poi mi andrebbe a coprire il jPanel con l'immagine...non so... Di seguito inserisco il codice utilizzato...Grazie anticipatamente se qualcuno mi aiuta...
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.GridBagConstraints;
import java.awt.Image;
import java.awt.Insets;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

import quicktime.qd.GDevice;



public class Home {

	@SuppressWarnings("deprecation")
	
	public static void main(String[] args) {
	
		Finestra finestra = new Finestra();
		finestra.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		finestra.show();

	}

}

class Finestra extends JFrame{

	private static final long serialVersionUID = -5303040173658951059L;
	private JLabel intestatario = null;
	private JLabel via = null;
	private JLabel comune = null;
	private JLabel partitaIva = null;
	
	public Finestra(){
		setTitle("Home");
		setSize(825, 550);
		PannelloImmagini pannelloImmagini = new PannelloImmagini();
		Container contentPane = getContentPane();
		//Label Intestatario
		GridBagConstraints gridBagConstraints = new GridBagConstraints();
		gridBagConstraints.gridx = 1;
		gridBagConstraints.insets = new Insets(-350, 0, 0, 0);
		gridBagConstraints.gridy = 0;
		intestatario = new JLabel();
		intestatario.setText("Prova");
		intestatario.setForeground(new Color(255, 0, 51));
		intestatario.setFont(new Font("Brush Script MT", Font.PLAIN, 38));
		//Label Via
		GridBagConstraints gridBagConstraints11 = new GridBagConstraints();
		gridBagConstraints11.gridx = 1;
		gridBagConstraints11.gridy = 1;
		gridBagConstraints11.insets = new Insets(-270, 0, 0, 0);
		via = new JLabel();
		via.setLocation(200, 100);
		via.setText("Prova");
		via.setForeground(new Color(0, 102, 102));
		via.setFont(new Font("Brush Script MT", Font.PLAIN, 30));
		// Label Comune
		GridBagConstraints gridBagConstraints2 = new GridBagConstraints();
		gridBagConstraints2.gridx = 1;
		gridBagConstraints2.gridy = 2;
		gridBagConstraints2.insets = new Insets(-195, 0, 0, 0);
		comune = new JLabel();
		comune.setText("Prova");
		comune.setForeground(new Color(0, 102, 102));
		comune.setFont(new Font("Brush Script MT", Font.PLAIN, 30));
		// Label P.Iva
		GridBagConstraints gridBagConstraints3 = new GridBagConstraints();
		gridBagConstraints3.gridx = 1;
		gridBagConstraints3.gridy = 3;
		gridBagConstraints3.insets = new Insets(-120, 0, 0, 0);
		partitaIva = new JLabel();
		partitaIva.setText("Prova");
		partitaIva.setForeground(new Color(0, 102, 102));
		partitaIva.setFont(new Font("Brush Script MT", Font.PLAIN, 28));
		pannelloImmagini.add(intestatario);
		pannelloImmagini.add(via);
		pannelloImmagini.add(comune, gridBagConstraints2);
		pannelloImmagini.add(partitaIva, gridBagConstraints3);
		getContentPane().add(pannelloImmagini);
	}
	
}

class PannelloImmagini extends JPanel{
	
	private static final long serialVersionUID = 6679038779869120082L;
	private Image image;

	public PannelloImmagini(){
		
		try {
			image = ImageIO.read(new File ("./DSC00331.gif"));
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}
	
	public void paintComponent(Graphics g){
		
		super.paintComponent(g);
		if (image==null)
			return;
		
		//Disegno l'immagine dall'angolo superiore sinistro
		
		g.drawImage(image,0,0,null);
		
	}
	
}

4 Risposte

  • Inserisci un nuovo jpanel però trasparente cosi non dovrebbe coprire l'immagine del jpanel principale.
    Prova ad utilizzare il metodo
    setOpaque (false);
    dell'oggetto jpanel per renderlo trasparente.
  • Grazie che hai risposto... avevo già provato così... e per sicurezza stamattina ho riprovato di nuovo... ma forse sbaglio qualcosa... rimando il codice con il suggerimento che mi hai dato, così puoi vedere se ho sbagliato...
    
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Container;
    import java.awt.Font;
    import java.awt.Graphics;
    import java.awt.GridBagConstraints;
    import java.awt.Image;
    import java.awt.Insets;
    import java.io.File;
    import java.io.IOException;
    
    import javax.imageio.ImageIO;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    
    import quicktime.qd.GDevice;
    
    
    
    public class Home {
    
    	@SuppressWarnings("deprecation")
    	
    	public static void main(String[] args) {
    	
    		Finestra finestra = new Finestra();
    		finestra.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		finestra.show();
    
    	}
    
    }
    
    class Finestra extends JFrame{
    
    	private static final long serialVersionUID = -5303040173658951059L;
    	private JLabel intestatario = null;
    	private JLabel via = null;
    	private JLabel comune = null;
    	private JLabel partitaIva = null;
    	
    	public Finestra(){
    		setTitle("Home");
    		setSize(825, 550);
    		PannelloImmagini pannelloImmagini = new PannelloImmagini();
    		JPanel jPanel = new JPanel();
    		jPanel.setOpaque(false);
    		//Label Intestatario
    		GridBagConstraints gridBagConstraints = new GridBagConstraints();
    		gridBagConstraints.gridx = 1;
    		gridBagConstraints.insets = new Insets(-350, 0, 0, 0);
    		gridBagConstraints.gridy = 0;
    		intestatario = new JLabel();
    		intestatario.setText("Prova");
    		intestatario.setForeground(new Color(255, 0, 51));
    		intestatario.setFont(new Font("Brush Script MT", Font.PLAIN, 38));
    		//Label Via
    		GridBagConstraints gridBagConstraints11 = new GridBagConstraints();
    		gridBagConstraints11.gridx = 1;
    		gridBagConstraints11.gridy = 1;
    		gridBagConstraints11.insets = new Insets(-270, 0, 0, 0);
    		via = new JLabel();
    		via.setLocation(200, 100);
    		via.setText("Prova");
    		via.setForeground(new Color(0, 102, 102));
    		via.setFont(new Font("Brush Script MT", Font.PLAIN, 30));
    		// Label Comune
    		GridBagConstraints gridBagConstraints2 = new GridBagConstraints();
    		gridBagConstraints2.gridx = 1;
    		gridBagConstraints2.gridy = 2;
    		gridBagConstraints2.insets = new Insets(-195, 0, 0, 0);
    		comune = new JLabel();
    		comune.setText("Prova");
    		comune.setForeground(new Color(0, 102, 102));
    		comune.setFont(new Font("Brush Script MT", Font.PLAIN, 30));
    		// Label P.Iva
    		GridBagConstraints gridBagConstraints3 = new GridBagConstraints();
    		gridBagConstraints3.gridx = 1;
    		gridBagConstraints3.gridy = 3;
    		gridBagConstraints3.insets = new Insets(-120, 0, 0, 0);
    		partitaIva = new JLabel();
    		partitaIva.setText("Prova");
    		partitaIva.setForeground(new Color(0, 102, 102));
    		partitaIva.setFont(new Font("Brush Script MT", Font.PLAIN, 28));
    		//pannelloImmagini.add(intestatario);
    		//pannelloImmagini.add(via);
    		//pannelloImmagini.add(comune, gridBagConstraints2);
    		//pannelloImmagini.add(partitaIva, gridBagConstraints3);
    		jPanel.add(intestatario,gridBagConstraints);
    		getContentPane().add(jPanel);
    		getContentPane().add(pannelloImmagini);
    	}
    	
    }
    
    class PannelloImmagini extends JPanel{
    	
    	private static final long serialVersionUID = 6679038779869120082L;
    	private Image image;
    
    	public PannelloImmagini(){
    		
    		try {
    			image = ImageIO.read(new File ("./DSC00331.gif"));
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    		
    	}
    	
    	public void paintComponent(Graphics g){
    		
    		super.paintComponent(g);
    		if (image==null)
    			return;
    		
    		//Disegno l'immagine dall'angolo superiore sinistro
    		
    		g.drawImage(image,0,0,null);
    		
    	}
    	
    }
    
  • Ho risolto da sola il problema...Scrivo la soluzione che puo' essere di aiuto anche a qualche altro...Nel codice avevo dimenticato di dichiarare che tipo di layout deve avere il pannello... Il codice è il seguente...
    pannelloImmagini.setLayout(new GridBagLayout());
  • Scusa ma non ho avuto tempo di passare da questo sito, quindi di vedere il codice che hai scritto. Comunque sono contento che hai risolto.
Devi accedere o registrarti per scrivere nel forum
4 risposte