java ImageIcon enkel fråga
Hej!
Jag har en exempel från bok som implementerar ImageIcon och sätter bilder på JLabel."Bilder med variabel storlek"
Kod ses ut så här:
import javax.swing.*;
import java.awt.*;
import java.net.*;
public class DynamicImageIcon extends ImageIcon{
private JComponent p;
public DynamicImageIcon(String filename){
super(filename);
}
public DynamicImageIcon(URL location){
super(location);
}
public DynamicImageIcon(Image image){
super(image);
}
public void setParent(JComponent parent){
p = parent;
}
public Dimension getIconSize(){
// räkna ut bildens ursprungsstorlek
int iw = getImage().getWidth(component),
ih = getImage().getHeight(component);
if(p==null)
return new Dimension(iw, ih);
else{
int pw, ph;
pw = p.getWidth() -p.getInsets().left-p.getInsets().right;
ph = p.getHeight()-p.getInsets().top - p.getInsets().bottom;
if(pw/(double)ph <iw/(double)ih)
return new Dimension(pw, pw*ih/iw);
else
return new Dimension(ph*iw/ih, ph);
}
}
public int getIconWidth(){
return getIconSize().width;
}
public int getIconHeight(){
return getIconSize().height;
}
public void paintIcon(Component c, Graphics g, int x, int y){
g.drawImage(getImage(), x, y, getIconWidth(), getIconHeight(), component);
}
}
class ImagePlayer extends JFrame{
ImagePlayer(){
DynamicImageIcon d1 = new DynamicImageIcon("hund.gif");
DynamicImageIcon d2 = new DynamicImageIcon("exit.gif");
DynamicImageIcon d3 = new DynamicImageIcon("hammer.gif");
JLabel l1 = new JLabel(d1, JLabel.CENTER);
JLabel l2 = new JLabel(d2, JLabel.CENTER);
JLabel l3 = new JLabel(d3, JLabel.CENTER);
d1.setParent(l1); d2.setParent(l2); d3.setParent(l3);
setLayout(new GridLayout(1,3));
add(l1); add(l2); add(l3);
setVisible(true);
pack();
setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main (String[]args){
new ImagePlayer();
}
}
Koden fungerar jättebra men där finns en sak som jag måste att lära sig. Där sker ingen error, men min Netbeans IDE kryssar alla "component"(totallt tre componenterna) och visar
Deprecated since 1.8 "Do not use this shared component, which is used to track image loading. It is left for backward compatibility only." Min lärobok är ganska gammal och förklarar inte detta. Jag vill att lära sig programmera rätt och säkert. Vad kan man skriva eller göra istället "component"?