java - Java 中的 URL 问题

标签 java user-interface swing url

这段代码给了我一个错误,很可能是 URL 路径对象

package prosjekt_1139;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.net.URL;

import javax.imageio.ImageIO;
import javax.swing.*;

@SuppressWarnings("serial")
public class HovedVinduet extends JFrame implements ActionListener {

private JPanel hukommelsepanel, hovedPanel, yathzyPanel,menypanel;
private JButton knapp1 = new JButton("Sudoku");
private JButton knapp2 = new JButton("Hukommelse");
private JButton knapp3 = new JButton("Yathzy");


public HovedVinduet() throws IOException {
    super("Spillet");


    hukommelsepanel = new Hukommelse(this);
    yathzyPanel = new Yathzy(this);

    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            //most likely its the url here that causing the problem
    URL path = getClass().getResource("/Image/grass.jpg");
    BufferedImage image = ImageIO.read(path);

    Background contentPane = new Background(image);

    contentPane.setOpaque(true);
    contentPane.setLayout(new GridBagLayout());
    contentPane.add(knapp1);
    contentPane.add(knapp2);
    contentPane.add(knapp3);

    knapp1.addActionListener(this);
    knapp2.addActionListener(this);
    knapp3.addActionListener(this);

    this.setContentPane(contentPane);
    this.setSize(800, 600);
    this.setLocation(200,200);
    this.setVisible(true);
    menypanel = contentPane;
}

public void setAktivtPanel(JPanel aPanel){
    this.hovedPanel = aPanel;
    this.setContentPane(hovedPanel);
    this.pack();
    this.setVisible(true);
}

public void setMenyPanelAktivt(){
    this.setTitle("Hovedvinduet");

    this.setSize(800, 600);
    this.setLocation(200,200);
    setAktivtPanel(menypanel);
}

public static void main(String[] args) {
    // TODO Auto-generated method stub
    javax.swing.SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            try {

                new HovedVinduet();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    });

}
@Override
public void actionPerformed(ActionEvent e) {
    // TODO Auto-generated method stub
    if (e.getSource() == knapp1){
        new Sudoku().setVisible(true);
    }
    if (e.getSource() == knapp2){
        this.setAktivtPanel(hukommelsepanel);
        this.setTitle("Hukommelse");
    }
    if (e.getSource() == knapp3){
        this.setAktivtPanel(yathzyPanel);
        this.setTitle("Yathzy");
    }
 }

}

异常(exception)情况是:

    Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException:input == null!
at javax.imageio.ImageIO.read(Unknown Source)
at prosjekt_1139.HovedVinduet.<init>(HovedVinduet.java:32)
at prosjekt_1139.HovedVinduet$1.run(HovedVinduet.java:74)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$000(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.awt.EventQueue$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

最佳答案

以下行返回 null:

URL path = getClass().getResource("/Image/grass.jpg");

检查文件“Image/grass.jpg”在您的类路径中是否可用。

关于java - Java 中的 URL 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5471741/

相关文章:

java - 如何将服务帐户 OAuth 2.0 流程与 GroupsSettings-api 结合使用

java - 如何将 JButton 移动到 JPanel 的右侧?

c++ - MFC 相当于 Qt QVBoxLayout 小部件

java - 如何在 JFrame 弹出错误后使主窗口处于非 Activity 状态

Java JTable获取选中行的数据

Java GUI 缩放问题

java - 如何在不转换为字符串的情况下完成/修复附加持久性算法?

java - 如何使用@EqualsAndHashCode With Include - Lombok

java - Java Swing 还在使用吗?

java - 如何安装sphinx4?