Java Swing setIconImage(new ImageIcon(byte[])) 不起作用



我有我的应用程序的Java秋千接口,并想将我的个人图标设置在左上角。

我的代码:

File fimg = new File("D:\logo.png");
BufferedImage img = ImageIO.read(fimg);
WritableRaster raster = img.getRaster();
DataBufferByte data   = (DataBufferByte) raster.getDataBuffer();
ImageIcon icon = new ImageIcon(data.getData());
setIconImage(icon.getImage());

此代码不起作用。

如果我更改此

new ImageIcon(data.getData()); //ImageIcon(byte[] x)

new ImageIcon(img); //ImageIcon(Image x)

工作正常。

如何使ImageIcon(byte[])工作,以将图像存储为字节?

尝试以下:

import java.awt.GridLayout;
import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class SwingTest {
    SwingTest() {
        JFrame frame=new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLayout(new GridLayout(1,2));
        BufferedImage img = null;
        try {
            URL url = new URL("http://www.digitalphotoartistry.com/rose1.jpg");
            img = ImageIO.read(url);
        } catch (IOException ex) {  ex.printStackTrace();}
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        try {
            ImageIO.write(img, "JPEG", baos);
        } catch (IOException ex) {ex.printStackTrace();      }
        frame.add(new JLabel(new ImageIcon(img)));
        frame.add(new JLabel(new ImageIcon(baos.toByteArray())));
        frame.pack();
        frame.setVisible(true);
    }
    public static void main (String[] agrs) {
        new SwingTest();
    }
}

最新更新