Cosa ne pensi se uso paintComponent(graphics g)
codice:
package jCallRemember.libreria;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.MouseListener;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
/**
*
* @author Linux
*/
public class RiquadroFoto extends JPanel{
private JLabel labelFoto;
private File fileFoto;
private Image foto;
public RiquadroFoto() {
this.labelFoto=new JLabel();
this.setLayout(new BorderLayout());
this.add(labelFoto,BorderLayout.CENTER);
}
public void initComponents(){
this.labelFoto.setPreferredSize(this.getPreferredSize());
this.setBackground(Color.white);
}
public void impostaMouseClick(MouseListener M){
this.labelFoto.addMouseListener(M);
}
public void inserisciFoto(File fileSelezionato) throws IOException {
this.fileFoto=fileSelezionato;
this.foto=Toolkit.getDefaultToolkit().createImage(this.fileFoto.getCanonicalPath());
Dimension dim=this.getPreferredSize();
this.labelFoto.setIcon(new ImageIcon(foto.getScaledInstance(dim.width, dim.height, Image.SCALE_SMOOTH)));
}
@Override
public void paintComponent(Graphics g) {
super.paintComponents(g);
Dimension dim=new Dimension(this.getPreferredSize());
this.labelFoto.setPreferredSize(dim);
if(foto!=null)
this.labelFoto.setIcon(
new ImageIcon(foto.getScaledInstance(dim.width, dim.height,
Image.SCALE_SMOOTH))
);
}
}
codice:
package jCallRemember.libreria;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import javax.swing.JFrame;
/**
*
* @author Linux
*/
public class FormInsertOperatore extends JFrame{
private final RiquadroFoto riquadro;
public FormInsertOperatore(){
riquadro=new RiquadroFoto();
}
public void setup(){
this.setPreferredSize(new Dimension(150,150));
this.riquadro.setPreferredSize(new Dimension(150,150));
this.add(riquadro,BorderLayout.CENTER);
this.pack();
this.setVisible(true);
this.riquadro.impostaMouseClick(new ClickRiquadroFoto(this.riquadro));
this.addComponentListener(new ComponentAdapter(){
@Override
public void componentResized(ComponentEvent e){
riquadro.setPreferredSize(getSize());
}
});
}
}
Unico problema iljpanel non viene piu colorato di bianco adesso . perchè?