Ciao a tutti! ho un problema nel visualizzare immagini gif,
in particolare caricando un'immagine gif all'interno di una JLabel dovrei vedere un cerchio rosso che si ingrandisce e rimpicciolisce.
Purtroppo quando si ingrandisce questo cerchio viene visualizzato erroneamente come un quadrato!
ho provato a creare immagini gif differenti, più lente, ma niente da fare...
posto il codice:
public class Prova3 extends javax.swing.JFrame {
private static final long serialVersionUID = 1L;
private JPanel jPanel1;
public static AllarmeJLabel sds;
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
/* (non-Javadoc)
* @see java.lang.Runnable#run()
*/
public void run() {
Prova3 inst = new Prova3();
inst.setLocationRelativeTo(null);
inst.setVisible(true);
}
});
}
public Prova3() {
super();
initGUI();
}
private void initGUI() {
try {
setDefaultCloseOperation(WindowConstants.DISPOSE_O N_CLOSE);
AnchorLayout thisLayout = new AnchorLayout();
getContentPane().setLayout(thisLayout);
this.addComponentListener(new ComponentAdapter() {
public void componentResized(ComponentEvent evt) {
thisComponentResized(evt);
}
});
{
jPanel1 = new PannelloSfondoImmagine();
jPanel1.setBackground(new Color(255,255,255)); //imposta sfondo
jPanel1.setBounds( 0, 0, jPanel1.getPreferredSize().width, jPanel1.getPreferredSize().height);
getContentPane().add(jPanel1);
}
{
sds=new AllarmeJLabel(jPanel1);
sds.setIconInAllarme(); //qui setto l'immagine gif con il cerchio rosso
}
setPreferredSize(new Dimension(jPanel1.getPreferredSize().width+6,
jPanel1.getPreferredSize().height+34)); //necessaria
setSize(jPanel1.getPreferredSize().width+6, jPanel1.getPreferredSize().height+34);
pack();
} catch (Exception e) {
e.printStackTrace();
}
}
}
public class AllarmeJLabel extends Observable {
private JLabel jlabel;
private JPanel pannello;
public void setIconInAllarme(){
jlabel.setIcon(AllarmeIcon.getAccesoInAllarme());
}
....
public AllarmeJLabel(JPanel pannello){
this.pannello= pannello;
jlabel=new JLabel();
setIconON();
jlabel.setMinimumSize(new java.awt.Dimension(AllarmeIcon.getAccesoNOAllarme( ).getIconWidth(),AllarmeIcon.getAccesoNOAllarme(). getIconHeight())); //gif più piccola
jlabel.setMaximumSize(new java.awt.Dimension(AllarmeIcon.getAccesoInAllarme( ).getIconWidth(),AllarmeIcon.getAccesoInAllarme(). getIconHeight())); //gif più grande
......
private static class AllarmeIcon{
private static AllarmeIcon istanza;
private static ImageIcon ledrosso;
private static ImageIcon ledverde;
private static ImageIcon ledgrigio;
private AllarmeIcon() {
ledrosso=new ImageIcon(getClass().getClassLoader().getResource( "lampeggianterosso.gif"));
ledverde=new ImageIcon(getClass().getClassLoader().getResource( "lampeggianteverde.png"));
ledgrigio=new ImageIcon(getClass().getClassLoader().getResource( "lampeggiantegrigio.png"));
}
public static ImageIcon getAccesoInAllarme(){
if(ledrosso==null)
getInstance();
return ledrosso;
}