同时调整 JPanel 大小时调整图像大小

努力变得更好

我的代码的问题是我的图像只能获得JFrame- 但我希望每次用户更改窗口大小时它都会更改大小。

图像大小也应该相对于JFrame大小还是它的JPanel如果是这样,我将如何实现这一目标?

这是我的代码:

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;

public class MainFrame extends JFrame {

private JPanel card1;
private JPanel principalPanel,centerPanel;
private BufferedImage image;

public MainFrame() {

    setSize(800,600);
    setLocationRelativeTo(null);
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setVisible(true);

    URL url = null;
    try {
        url = new URL("https://i.stack.imgur.com/7bI1Y.jpg");
    } catch (MalformedURLException e) {

    }
    try {
        image = ImageIO.read(url);
    } catch (IOException e) {
        System.out.println("Can not find image");
    }


    Image scaledImage = image.getScaledInstance(this.getWidth(),
            this.getHeight(),Image.SCALE_SMOOTH);

    card1 = new JPanel() {
        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            g.drawImage(scaledImage,0,0,this);
        }
    };

    centerPanel = new JPanel();
    centerPanel.setLayout(new CardLayout());
    centerPanel.add(card1,"1");

    principalPanel = new JPanel();
    principalPanel.setLayout(new BorderLayout());
    principalPanel.add(centerPanel,BorderLayout.CENTER);

    setContentPane(principalPanel);
}

public static void main(String[] args) {
    SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
            new MainFrame();
        }
    });
}
}
安德鲁·汤普森

图像可以(确实应该)在paintComponent(Graphics)方法中缩放这样它就可以更改为面板的任何尺寸。

另请参阅代码中的注释:

import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.net.URL;

public class MainFrame2 extends JFrame {

    private JPanel card1;
    private BufferedImage image;

    public MainFrame2() {

        setSize(800, 600);
        setLocationRelativeTo(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        try {
            // if there is a problem with URL - no point trying to load
            URL url = new URL("https://i.stack.imgur.com/7bI1Y.jpg");
            image = ImageIO.read(url);
        } catch (Exception e) {
            System.out.println("Problem loading image");
            e.printStackTrace();
        }

        /* The frame will actually be larger than the panel. 
        Better to scale the image to the SIZE OF THE PANEL ...
        Image scaledImage = image.getScaledInstance(this.getWidth(),
                this.getHeight(), Image.SCALE_SMOOTH); */

        card1 = new JPanel() {
            @Override
            protected void paintComponent(Graphics g) {
                super.paintComponent(g);
                // .. this is how.
                g.drawImage(image, 0, 0, getWidth(), getHeight(), this);
            }
        };

        setContentPane(card1);

        setVisible(true); // this should be last! 
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new MainFrame2();
            }
        });
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

同时调整div的大小时,如何防止div的“跳跃”?

来自分类Dev

调整窗口高度时调整图像的大小

来自分类Dev

调整窗口高度时调整图像的大小

来自分类Dev

在保持宽高比的同时调整QPixmap的大小

来自分类Dev

同时调整几个元素的大小

来自分类Dev

在保持宽高比的同时调整QPixmap的大小

来自分类Dev

HTML,CSS:在调整大小的同时调整IMG的大小

来自分类Dev

NSWindow调整大小时调整表列大小

来自分类Dev

在调整容器大小时调整传单图的大小

来自分类Dev

调整表单大小时调整组件大小

来自分类Dev

调整div大小时调整字体大小

来自分类Dev

在Android中调整背景大小时调整按钮的大小

来自分类Dev

使用 resizeEvent 调整窗口大小时调整 Qlabel 图像大小

来自分类Dev

在PHP中上传时调整图像大小

来自分类Dev

如何在滚动时调整图像大小?

来自分类Dev

鼠标悬停时调整图像大小

来自分类Dev

Highcharts-在图表调整大小时调整图例?

来自分类Dev

JTable-在调整行大小时调整行标题

来自分类Dev

Highcharts-在图表调整大小时调整图例?

来自分类Dev

CSS在窗口调整大小时调整div和div内的图像

来自分类Dev

如何调整JPanel的大小

来自分类Dev

更改字体大小时调整Div的大小

来自分类Dev

CSS Flexbox:如何在保持宽高比的同时调整固定大小的图像的大小

来自分类Dev

如何在保持其纵横比的同时调整PictureBox的大小

来自分类Dev

不能同时调整静态和可拖动元素的大小

来自分类Dev

如何在保持其纵横比的同时调整PictureBox的大小

来自分类Dev

无法同时调整静态和可拖动元素的大小

来自分类Dev

谷歌可视化错误,同时调整屏幕大小

来自分类Dev

不要在MKMapView放大/缩小时调整注释的大小

Related 相关文章

  1. 1

    同时调整div的大小时,如何防止div的“跳跃”?

  2. 2

    调整窗口高度时调整图像的大小

  3. 3

    调整窗口高度时调整图像的大小

  4. 4

    在保持宽高比的同时调整QPixmap的大小

  5. 5

    同时调整几个元素的大小

  6. 6

    在保持宽高比的同时调整QPixmap的大小

  7. 7

    HTML,CSS:在调整大小的同时调整IMG的大小

  8. 8

    NSWindow调整大小时调整表列大小

  9. 9

    在调整容器大小时调整传单图的大小

  10. 10

    调整表单大小时调整组件大小

  11. 11

    调整div大小时调整字体大小

  12. 12

    在Android中调整背景大小时调整按钮的大小

  13. 13

    使用 resizeEvent 调整窗口大小时调整 Qlabel 图像大小

  14. 14

    在PHP中上传时调整图像大小

  15. 15

    如何在滚动时调整图像大小?

  16. 16

    鼠标悬停时调整图像大小

  17. 17

    Highcharts-在图表调整大小时调整图例?

  18. 18

    JTable-在调整行大小时调整行标题

  19. 19

    Highcharts-在图表调整大小时调整图例?

  20. 20

    CSS在窗口调整大小时调整div和div内的图像

  21. 21

    如何调整JPanel的大小

  22. 22

    更改字体大小时调整Div的大小

  23. 23

    CSS Flexbox:如何在保持宽高比的同时调整固定大小的图像的大小

  24. 24

    如何在保持其纵横比的同时调整PictureBox的大小

  25. 25

    不能同时调整静态和可拖动元素的大小

  26. 26

    如何在保持其纵横比的同时调整PictureBox的大小

  27. 27

    无法同时调整静态和可拖动元素的大小

  28. 28

    谷歌可视化错误,同时调整屏幕大小

  29. 29

    不要在MKMapView放大/缩小时调整注释的大小

热门标签

归档