Ciao a tutti,ho letto che per mettere l'immagine di sfondo al mio jframe devo fare l'override del metodo paintComponent(Graphics g) ma,non mi è chiaro forse come viene fatto, io ho riscritto il metodo e poi all'interno di esso l'ho assegnato alla superclasse con super.painComponent(g) cosi:
codice:
import java.awt.BorderLayout;import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.Toolkit;


import javax.swing.Icon;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;




public class Main extends JFrame {
	
	
	
	
	JScrollPane scrollPane;
	ImageIcon icon;
	Image image;




	public Main() {
		


		JPanel panel = new JPanel();
		
		panel.setOpaque( false );
		panel.setPreferredSize( new Dimension(400, 400) );
		
		getContentPane().add( panel );


		JButton button = new JButton( "Hello" );
		panel.add( button );
		
		
	
	}


	
	protected void paintComponent(Graphics g)
		{
		icon = new ImageIcon("/Immagini/Main.jpg");
		// Dispaly image at at full size
		g.drawImage(icon.getImage(), 0, 0, null);


		// Scale image to size of component
			 Dimension d = getSize();
			 g.drawImage(icon.getImage(), 0, 0, d.width, d.height, null);


		// Fix the image position in the scroll pane
//			 Point p = scrollPane.getViewport().getViewPosition…
//			 g.drawImage(icon.getImage(), p.x, p.y, null);


		super.paintComponent(g);
		}
	


	public static void main(String[] args) {
		new Main().setVisible(true);


	}


}
Cosi mi dice che il metodo non è applicabile alla Super classe JFrame allora ho riscritto il tutto facendo una classe annidata che estende Jpanel e voglio fare l'override del sua parte grafiva ma non so come chiamare l'override su di essa cosi ha funzionato


codice:
import java.awt.BorderLayout;import java.awt.Dimension;


import java.awt.Graphics;
import java.awt.Image;






import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;




public class Main extends JFrame {
	


	
	ImageIcon icon;
	Image image;




	public Main() {


		setSize( new Dimension(400, 400) );
		Panel pa = new Panel();
		getContentPane().add(pa);
	}
	
	
	
	private class Panel extends JPanel{
	
	    Panel(){
		
		setOpaque( false );


		JButton button = new JButton( "Hello" );
		add( button );
		
		
	}
	


	
	protected void paintComponent(Graphics g)
		{
		icon = new ImageIcon("Immagini/Main.jpg");
		// Dispaly image at at full size
		g.drawImage(icon.getImage(), 0, 0, null);


		// Scale image to size of component
		Dimension d = getSize();
		g.drawImage(icon.getImage(), 0, 0, d.width, d.height, null);


		// Fix the image position in the scroll pane
//			 Point p = scrollPane.getViewport().getViewPosition…
//			 g.drawImage(icon.getImage(), p.x, p.y, null);


		super.paintComponent(g);
		}
	
	}
	public static void main(String[] args) {
		new Main().setVisible(true);


	}


}

Secondo voi è il modo corretto per farlo???