Java 如何将图像导入JPanel

Java 如何将图像导入JPanel,java,image,swing,graphics,jpanel,Java,Image,Swing,Graphics,Jpanel,我正在做一项作业,喘息着,我的图像显示有问题。我不是在找人来完成我的任务,但我迫切需要一些帮助,找出为什么我的代码不能正常工作。我已经阅读了我的Java编程书,并在网上搜索了答案,但都没有结果,所以如果有人能给我指引正确的方向,我将不胜感激!! 这是我的displayImage代码: import java.awt.Graphics; import java.awt.Image; import javax.swing.ImageIcon; import javax.swing.JFrame;

我正在做一项作业,喘息着,我的图像显示有问题。我不是在找人来完成我的任务,但我迫切需要一些帮助,找出为什么我的代码不能正常工作。我已经阅读了我的Java编程书,并在网上搜索了答案,但都没有结果,所以如果有人能给我指引正确的方向,我将不胜感激!! 这是我的displayImage代码:

import java.awt.Graphics;
import java.awt.Image;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class DisplayImage extends JFrame {
public void DislayImage(){
    add (new ImagePanel()); 
}

public static void main(String[] args) {
    JFrame frame = new DisplayImage (); 
    frame.setTitle("Go Bearcats!");
    frame.setSize(300, 300);
    frame.setLocationRelativeTo(null);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
    Assignment02 a = new Assignment02();
    frame.add(a); 

}
}
class ImagePanel extends JPanel {
    public final static String LOC = "C:\\UCincinnatiLogo.jpg";
    private ImageIcon imageIcon = new ImageIcon (LOC); 
    private Image image = imageIcon.getImage(); 

    @Override /**Draw image on the panel*/
    protected void paintComponent(Graphics g){
        super.paintComponent(g);

        if (image !=null)
            g.drawImage(image, 200, 200, getWidth(), getHeight(), this); 
    }

 }

您正在图像面板顶部添加一个组件。JFrame使用borderLayout,因此在您进行操作时添加到它的任何内容都将覆盖以前添加的任何内容

JFrame frame = new DisplayImage (); 
frame.setTitle("Go Bearcats!");
frame.setSize(300, 300);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
Assignment02 a = new Assignment02();
frame.add(a);  // here you add something on top of your imagePanel
相反,通过setContentPane…,将ImagePanel设置为JFrame的contentPane,然后将内容添加到JFrame/contentPane,但确保它们不是不透明的

public class DisplayImage extends JFrame {
public void DislayImage(){
    setContentPane(new ImagePanel()); 
}
然后呢,

Assignment02 a = new Assignment02();
a.setOpaque(false);  
frame.add(a);
请注意,作为旁白,我很少创建任何扩展JFrame的类,而是在需要时创建我的JFrame。相反,我会创建ImagePane,然后在将所有内容添加到JFrame之前直接向其添加组件


此外,您没有向我们显示Assignment02类,但它最好具有非不透明的JPanel和组件。

将面板添加到框架后调用setVisible。还有,什么不起作用?使用JLabel,在其上添加图标并将标签与图像大小一起放置在面板上更容易。为什么说您的代码工作不正常?@MadProgrammer由于图像未显示,代码工作不正常。我没有收到任何错误,只是图像没有显示。@mad我在publicstaticvoidmain中调用setVisible。这对我尝试导入的图像不起作用吗?