简体   繁体   中英

How to add an Image to a JFrame

I'm trying to add an image to a JFrame and set its location, I don't know why it just does not add into it, maybe I don't understand how the JFrame class works since a normal text JLabel adds into the JFrame simply without any trouble and a JLabel containing an image simply does not add in.

I would appreciate if someone would explain the error in the code, and maybe even give me a short explanation of why my way does not work. Thanks!

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);
    }
}
  1. are you using a gui class or you are writing its code into a main class
    what is in your code is that you are writing its code so easy way is to just drag and drop try this link for normal jframes gui eclipse gui

about the picture into jframe is easy one all what you have to do is 1. create a label by setting its size as you want on the jframe by dragging and dropping only 2. follow the pictures 在此处输入图片说明

  1. then you browser for your picture you want 在此处输入图片说明

  2. select the picture and its done
    在此处输入图片说明

Hope it helps

Make sure the path to your image is valid. All I did was point to a valid image on my PC and the code practically worked. There were a few things added and organized below.

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);
            }
        });
    }
}

To make sure both labels show up, provide a layout and add them accordingly.

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);
            }
        });
    }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM