如何将图像添加到JFrame

时间:2018-07-16 21:38:07

标签: java image swing jframe jlabel

我正在尝试将图像添加到JFrame并设置其位置,我不知道为什么它不添加到图像中,也许我不了解JFrame的方式该类之所以起作用,是因为普通文本JLabel完全没有任何麻烦地添加到JFrame中,而包含图像的JLabel根本没有添加。

如果有人能解释代码中的错误,甚至可能给我简短解释为什么我的方法行不通,我将不胜感激。谢谢!

import java.awt.*;
import javax.swing.*;

public class Walk {
    public static void main(String[] args) {
        JFrame f = new JFrame("Study");
        f.setSize(3000,1000);
        f.getContentPane().setBackground(Color.white);
        f.getContentPane().add(new JLabel("test", JLabel.CENTER) );
        JLabel l = new JLabel(new ImageIcon("C:\\Users\\leguy\\OneDrive\\Desktop\\Stuff\\stillsp"));
        l.setBounds(100, 100, 100, 100);
        l.setVisible(true);
        f.add(l);
        f.setVisible(true);
    }
}

2 个答案:

答案 0 :(得分:0)

  1. 您使用的是gui类还是要将其代码编写到主类中?
    您的代码中的内容是您正在编写其代码,所以简单的方法是拖放该链接,以使用普通jframe gui eclipse gui

将图片转换为jframe很简单,您要做的就是 1.通过仅在jframe上设置所需的标签大小来创建标签 2.跟随图片enter image description here

  1. 然后浏览您想要的图片enter image description here

  2. 选择图片并完成图片
    enter image description here

希望有帮助

答案 1 :(得分:0)

确保图像路径有效。我所做的只是指向PC上的有效映像,并且该代码实际上有效。以下添加并整理了一些内容。

import java.awt.Color;
import javax.swing.*;

public class Walk {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() { // Safety first...
            @Override
            public void run() {
                String path = "C:\\Path\\To\\Image.png"; // Make sure it's correct
                JFrame frame = new JFrame("Study");
                JLabel label = new JLabel(new ImageIcon(path));

                frame.setSize(3000, 1000);
                frame.getContentPane().setBackground(Color.white);
                frame.getContentPane().add(new JLabel("test", JLabel.CENTER));

                label.setBounds(100, 100, 100, 100);
                label.setVisible(true);

                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.add(label);
                frame.pack(); // Pack the frame's components.
                frame.setVisible(true);
            }
        });
    }
}

要确保同时显示两个标签,请提供布局并相应地添加它们。

import java.awt.*;
import javax.swing.*;

public class Walk {
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                String path         = "C:\\Path\\To\\Image.png"; // Make sure it's correct
                JFrame frame        = new JFrame("Study");
                Container container = frame.getContentPane();
                JLabel imageLbl     = new JLabel(new ImageIcon(path));
                JLabel textLbl      = new JLabel("test");

                frame.setLayout(new BorderLayout());
                frame.setSize(3000, 1000);

                imageLbl.setBounds(100, 100, 100, 100);
                imageLbl.setVisible(true);

                container.setBackground(Color.WHITE);
                container.add(textLbl, BorderLayout.NORTH);
                container.add(imageLbl, BorderLayout.CENTER);

                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.pack();
                frame.setVisible(true);
            }
        });
    }
}