我正在设置一个Image作为我的JApplet的背景,并使用resize方法将Image填充到JApplet背景中。我目前正在使用
Image background;
public void paint(Graphics g) {
super.paint(g);
g.drawImage(background, 0, 0, this);
}
public void init() {
// TODO start asynchronous download of heavy resources
background=resize(new ImageIcon(getClass().getResource("/org/me/pd/resources/music.png")),this.getWidth(),this.getHeight()).getImage();
this.setLayout(new GridLayout(6,6));
//Create();
}
这是我的调整大小方法
public ImageIcon resize(ImageIcon icon, int width, int height)
{
BufferedImage converted = new BufferedImage(icon.getIconWidth(), icon.getIconHeight(), BufferedImage.TYPE_INT_ARGB);
Graphics g = converted.createGraphics();
icon.paintIcon(null, g, 0,0);
g.dispose();
BufferedImage bi = new BufferedImage(width, height, BufferedImage.TRANSLUCENT);
Graphics2D g2d = (Graphics2D) bi.createGraphics();
g2d.addRenderingHints(new RenderingHints(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY));
g2d.drawImage(converted, 0, 0, width, height, null);
g2d.dispose();
ImageIcon correct=new ImageIcon(bi);
return correct;
}
这最初在加载Applet并填充图像时起作用但是当applet最大化时,Image不会使用Applet最大化。它显示了在最大化之前保持原样。
我做错了什么?
答案 0 :(得分:2)
无需重新缩放图标。
相反,你只需让绘画方法为你做到这一点:
g.drawImage(image, 0, 0, getWidth(), getHeight(), this);
但是,你不应该通过覆盖applet的paint()方法来实现这一点。
相反,您应该覆盖JPanel的paintComponent()方法并将面板添加到您的applet。然后,您的窗格将成为applet的内容窗格。然后,您可以将面板的布局设置为BorderLayout,使其行为与默认内容窗格完全相同。