有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

swing为什么我的图像不显示?(JavaGUI)

我有一个奇怪的问题。 今天我在Linux上写了我的程序,输入了图片的地址,一切都很好。不知怎的,当我在家里试着打开窗户时,图像就不会显示出来!(我当然更新了地址) 我应该怎样写这幅画的地址?我应该把它放在程序包的什么地方? 我没有更改第二个地址,所以你可以理解

正如你所看到的,还有另一个问题。 我需要显示两个图像,但我只看到一个。我应该使用哪种布局来显示相邻的两个图像

对不起,如果我的问题很愚蠢,我还是个初学者:)

public class View extends JFrame {
    JPanel jp = new JPanel();
    JLabel jl = new JLabel();
    JPanel jg = new JPanel();
    JLabel jz = new JLabel();

    public View() {
        this.setTitle("Media");
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        JPanel contentAll =  new JPanel();
        contentAll.setLayout(new BorderLayout());

        //(...)  a pair of buttons here, not relevant I guess

        jl.setIcon(new ImageIcon("/Users/Public/Pictures/Sample Pictures/Chrysanthemum.jpeg")); ///Windows
        jp.add(jl);
        add(jp);

        jz.setIcon(new ImageIcon("/home/d/Downloads/chanel.jpg")); /// Linux
        jg.add(jz);
        add(jz);
        jg.setLayout(new FlowLayout());

        this.pack();
    }
}

共 (1) 个答案

  1. # 1 楼答案

    它在Windows中的Chrysanthemum.jpg使用jpg而不是jpeg

    在Windows中追加C:以生成绝对路径

    new ImageIcon("C:/Users/Public/Pictures/Sample Pictures/Chrysanthemum.jpg");
    

    编辑

    如果是Windows,请使用绝对路径

    String userHome = System.getProperty("user.home"); // C:/Users/USERNAME
    String userPath = userHome.substring(0, userHome.lastIndexOf("\\")); // C:/Users
    String fullPath = userPath + "/Public/Pictures/Sample Pictures/Chrysanthemum.jpg";