Java JLabel图标显示的像素变形JFrame。对于不同的png图像(全部为32x32),这会始终发生。我没有缩放图像,它们显示在程序32x32中,我已使用getWidth和getHeight在JLabel上对其进行了验证。每次运行程序时,变形会出现在同一位置,而不是随机出现。
在此屏幕快照中,您可以看到一系列JLabel图标,每个图标的影响方式不同。
从侧面调整窗口大小时,随着图标与窗口一起移动,变形会像垂直线一样在图标上移动。
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
public class FrameApp extends JFrame
{
public static void main(String[] args) throws IOException
{
FrameApp frameApp = new FrameApp();
}
private FrameApp() throws IOException
{
BufferedImage image;
URL url = new URL("http://i.stack.imgur.com/L5DGx.png");
image = ImageIO.read(url);
JLabel label = new JLabel(new ImageIcon(image));
add(label);
pack();
setVisible(true);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:
我在Windows 8.1 64位上使用JDK 11.0.3,Java SE Runtime Environment构建1.8.0_202。