【问题标题】:How to add an image to JPanel in java如何在java中将图像添加到JPanel
【发布时间】:2018-09-02 14:03:05
【问题描述】:

我正在使用 eclipse 并四处搜索教程,但没有一个对我有太大帮助,因为如果我尝试这些功能会出错。我只是想知道我做错了什么或者我应该用什么来让代码工作。我下面的图片是最终产品,我只想添加一张图片,然后努力添加文字。所以现在我只想知道使用 GUI 功能添加图像。另外,我尝试了下面的代码,但由于某种原因没有显示图像。我也想知道我做错了什么以及如何纠正它。

package Lab09Exercises;
import javax.swing.*;

public class Lab09Excercise extends JFrame {
JPanel jp = new JPanel();
JButton jb  = new JButton();


    public Lab09Excercise() {

        setTitle("Excercise2");
        setVisible(true);
        setSize(400,600);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        jb.setIcon(new ImageIcon("advertising.png"));
        jp.add(jb);
        add(jb);
        validate();
    }

    public static void main(String[] args) {


        Lab09Excercise a = new Lab09Excercise();
    }
}
[![the image is the result i want to get but i just wanana know how do add an image first before I can add rest of the components][1]][1]


  [1]: https://i.stack.imgur.com/QsvFp.png

【问题讨论】:

    标签: java image user-interface


    【解决方案1】:

    创建您的自定义 JPanel。

    看,创建一个名为 ImagePanel 的类并添加此代码,然后将 JPanel 替换为 ImagePanel

    import java.awt.Graphics;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.imageio.ImageIO;
    import javax.swing.JPanel;
    
    public class ImagePanel extends JPanel{
    
        private BufferedImage image;
    
        public ImagePanel() {
           try {                
              image = ImageIO.read(new File("image name and path"));
           } catch (IOException ex) {
           }
        }
    
        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            g.drawImage(image, 0, 0, this);           
        }
    
    }
    

    由 Brendan Cashman How to add an image to a JPanel?回答

    还有

    private void DisplayImage(JPanel jp, String url) {
        JLabel jl=new JLabel();
        jl.setIcon(new javax.swing.ImageIcon(getClass().getResource(url)));
        jp.add(jl);
    }
    

    FiroKun 回复How can I display an image in a JPanel

    【讨论】:

    • 你能解释一下为什么用 ImagePanel 替换 JPanel 以及为什么我必须创建自定义类吗?对编程来说有点新,所以想知道你为什么选择那个方法
    • @geb 我给了你两个选项,第一个创建一个面板,准备在绘画时显示图像,但你可以使用第二个,它是一种从路线添加到图像的方法到 JPanel
    • 问题是我已经有一个图像并想直接将它与 JPanel 一起使用,如果我使用第二种方法,我会收到一个错误,即“无法对非静态对象进行静态引用类”,为此我必须创建一个单独的类吗?
    • @geb 如果你的类不是静态的,那就去掉 static 关键字,我只是编辑我的帖子,复制第二个选项的代码再试一次
    • 我试过了,它可以工作,但图像不会显示,我如何从我的 eclipse 包中读取,因为我的图片位于那里
    【解决方案2】:

    您可以使用JLabel 显示图像。它使用起来可能更方便,因为您还可以使用它显示文本并像任何其他组件一样进行操作。

    ImageIcon imageIcon = new ImageIcon("path/to/image.jpg");
    JLabel label = new JLabel("Sample text", imageIcon, JLabel.CENTER);
    

    【讨论】:

    • 它可以工作,但由于虚拟机,我不知道读取图像的路径
    • 如果您想从 Jar 中获取图像,请参阅 this question。否则,路径在 VM 内的工作方式相同。你的图片在哪里?
    猜你喜欢
    • 1970-01-01
    • 2017-09-07
    • 2018-01-14
    • 2010-09-22
    • 1970-01-01
    • 2012-07-12
    相关资源
    最近更新 更多