Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    158

    Immagine Sfondo Super Jframe

    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???

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2009
    Messaggi
    755
    disegna l'immagine in un JPanel che metterai all'interno del JFrame , ad esempio:

    codice:
    class Finestra extends JFrame {
    
        public Finestra () {
           .....
           .....
           getContentPane ().add (new JPanel () {
              public void paintComponent (Graphics g) {
                 paintComponent (g);
                 g.drawImage (tuaImginFormatoImage , 0 , 0 this);
             }
           });
        }
        ...
    }
    Ultima modifica di zipangulu; 15-10-2013 a 02:29

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.