java - GridBagLayout 中的图像大小不正确

标签 java swing layout-manager gridbaglayout imageicon

我正在尝试调整 ImageIcon 的大小并在我的 GridBagLayout JPanel 中使用它。它确实调整了大小...但它仍然以全尺寸显示。因此,您在较大图像内有一个调整大小的图像。有人发现下面的代码有什么明显的错误吗?谢谢你!

public CharacterPage(WikiDB db) throws IOException {
    super("Character Page");

    setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

    setSize(new Dimension(1000,1000));

    rootPanel.setLayout(new GridBagLayout());
    final GridBagConstraints c = new GridBagConstraints();
    rootPanel.setSize(new Dimension(500,500));

   searchButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {

            BufferedImage img1 = null;

                for (int x = 0; x < characterImages.size(); x++){
                    String imageURL = "http://cosplayidol.otakuhouse.com/wp- 
                           content/uploads/2012/06/s-1-1.jpg"

                    try
                    {
                        URL url1 = new URL(imageURL);

                        URLConnection conn1 = url1.openConnection();
                        conn1.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11");
                        InputStream in1 = conn1.getInputStream();

                        img1 = ImageIO.read(in1);
                    } catch (IOException ioe)
                    {
                        ioe.printStackTrace();
                    }


                }

                Graphics2D g2 = img1.createGraphics();
                g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, 
                    RenderingHints.VALUE_INTERPOLATION_BILINEAR);
                g2.drawImage(img1, 0,0,100, 100, null);
                g2.dispose();

                ImageIcon newIcon = new ImageIcon(img1);

                c.fill = GridBagConstraints.HORIZONTAL;

                JLabel cIcon = new JLabel(newIcon);
                c.gridx = 0;
                c.gridy = 6;
                rootPanel.add(cIcon,c);
               }
          });

       setContentPane(rootPanel);
    pack();
    setVisible(true);
      }

最佳答案

Graphics2D g2 = img1.createGraphics();
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, 
    RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2.drawImage(img1, 0, 0, 100, 100, null);
g2.dispose();

应该是这样的:

int w = 100;
int h = 100;
// create an image of the appropriate size!
BufferedImage img2 = new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB);
Graphics2D g2 = img2.createGraphics();
g2.setRenderingHint(RenderingHints.KEY_INTERPOLATION, 
    RenderingHints.VALUE_INTERPOLATION_BILINEAR);
g2.drawImage(img1, 0, 0, w, h, null);
g2.dispose();

关于java - GridBagLayout 中的图像大小不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30112958/

相关文章:

java - 在 switch 语句中使用逻辑

java - ACM编程题

java - 显示 jdialog 后 JTextArea 不更新

Java JFrame 意外地奇怪地删除组件

java - 将 JButtons 对齐在嵌套 JPanel 的中心 (BoxLayout)

java - 将 2 组/项目在中心两侧对齐

java - MySQL 数据未显示在 Android RecyclerView 中(Logcat 错误 : Couldn't load memtrack module)

java - 用java粗略指南填写excel或pdf

java - 如何验证输入的文本是否为数字?

java - GridBagLayout - 意外添加/和更改间距