根据窗口的屏幕分辨率调整图像

时间:2011-11-02 12:26:24

标签: java image swing jframe add

我在JLabel中添加了JFrameJLabel中添加了一张大小为1024x768的图片。

当我在1024x768中设置窗口分辨率并运行应用程序时,图像以完整窗口显示。但是当我在1280x768中设置窗口屏幕的分辨率时 - 图像只显示在窗口的三分之一处。

如何调整或添加尺寸为1024x768的图像,以便在任何屏幕分辨率下图像将显示覆盖整个窗口?换句话说,根据窗口的屏幕分辨率调整图像。

2 个答案:

答案 0 :(得分:3)

enter image description here

import java.awt.*;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
import java.net.URL;
import javax.imageio.ImageIO;

class ImagePanel extends JPanel {

    Image image;

    ImagePanel(Image image) {
        this.image = image;
    }

    @Override
    public void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.drawImage(image,0,0,getWidth(),getHeight(),this);
    }

    public static void main(String[] args) throws Exception {
        URL url = new URL("http://pscode.org/media/stromlo2.jpg");
        final Image image = ImageIO.read(url);
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JFrame f = new JFrame("Image");
                f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                f.setLocationByPlatform(true);

                ImagePanel imagePanel = new ImagePanel(image);
                imagePanel.setLayout(new GridLayout(5,10,10,10));
                imagePanel.setBorder(new EmptyBorder(20,20,20,20));
                for (int ii=1; ii<51; ii++) {
                    imagePanel.add(new JButton("" + ii));
                }

                f.setContentPane(imagePanel);
                f.pack();
                f.setVisible(true);
            }
        });
    }
}

使用原始图像

Raw image

答案 1 :(得分:1)

我在向JFrame添加图片时多次遇到此问题。图像尺寸较小或JFrame尺寸较小。

这是一个很棒的网站,您可以根据JFrame调整图片大小,而不会扭曲图像。

您可以访问此网站Go to the site

我已经解释并展示了如何利用网站提供的照片编辑器来调整图像大小。

转到我的视频教程Go to the Video Session