Imagens plano de fundo

1 resposta
D

Alguem saberia me dizer como eu coloco uma imagem como plano de fundo de um gerenciador de layout, no caso, FlowLayout.
Valeu!!!

1 Resposta

F

isto eh independente do layout… arranje uma figura e renomeie para
background.gif e coloce no mesmo diretorio dos teu fontes e rode
o exemplo abaixo

package panel;

import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.net.URL;

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

/**
 * @author fabiofalci
 */
public class MyPanel extends JPanel {

    private Image background;
    
    public MyPanel() {
        this.initialize();
    }
    
    protected void initialize() {
        this.background = this.getImage("background.gif").getImage();        
        this.setLayout(null);
        
        JTextField textField = new JTextField("Label");
        textField.setBounds(20, 20, 100, 22);
        this.add(textField);
        
        JButton b = new JButton("Button");
        b.setBounds(130, 20, 100, 22);
        this.add(b);
    }
    
    public ImageIcon getImage(String path) {               
        URL imageURL = getClass().getResource(path);
        if (imageURL == null)
            return null;
        
        return new ImageIcon(imageURL);         
    }    
    
    public void paintComponent(Graphics g) {            
        Dimension dDesktop = this.getSize();
        g.clearRect(0, 0, dDesktop.width, dDesktop.height); // limpa a tela
                
        double width = dDesktop.getWidth();        
        double height = dDesktop.getHeight();        
                
        int x = (int)(width - background.getWidth(null)) / 2;
        int y = (int)(height - background.getHeight(null)) / 2;

        g.drawImage(background, x, y, this);
    }            
    
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        MyPanel panel = new MyPanel();
        frame.setContentPane(panel);        
        frame.setSize(300, 300);
        frame.show();
    }
}
Criado 12 de abril de 2005
Ultima resposta 12 de abr. de 2005
Respostas 1
Participantes 2