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: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 funzionatocodice: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); } }
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???

Rispondi quotando