なぜこの JPanel に画像を読み込めないのか、本当に理解できません....コードはちょっと長いですが、コメントを付けたので、何が起こっているのかを推測するのはかなり簡単なはずです。誰でも助けることができますか?背景色を削除しようとしましたが、あまり効果がないようです (背景色を削除する以外)。
編集
追加されていないクラスで drawScene メソッドが呼び出されていたエラーをなんとか修正しましたが、画像の読み込み中にエラーが発生したことが表示されます...理由は完全にはわかりません。これは、誰かが自分でプログラムを実行してみたい場合に使用しているイメージです。Window.java ファイルのすぐ下のパッケージに追加しました。
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
///
///WINDOW CLASS BEGINS
///
public class Window extends JPanel{
//Instance Variables
Tools tool = new Tools();
GameScreen game = new GameScreen();
Scene scene = new Scene();
//All other variable initialization things
private static final long serialVersionUID = 1L;
public Window(){
//Sets the layout to the class
this.setLayout(new BorderLayout());
//adding things to the class
this.add(game,BorderLayout.CENTER);
//Sets background Colors to the panels
this.game.setBackground(Color.black);
}
public static void main(String args[]){
JFrame frame = new JFrame();
Window window = new Window();
frame.setSize(new Dimension(800,600));
frame.setExtendedState(JFrame.MAXIMIZED_BOTH);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
frame.setJMenuBar(Tools.bar);
frame.add(window);
frame.pack();
frame.setLocationRelativeTo(null);
}
public void paintComponent(Graphics g){
}
///
// TOOLBAR CLASS BEGINS
////
public static class Tools extends JPanel implements ActionListener{
private static final long serialVersionUID = 1L;
JPanel panel = new JPanel();
public static JMenuBar bar = new JMenuBar();
JMenu file = new JMenu("file");
JMenuItem exit = new JMenuItem("Exit");
@SuppressWarnings("static-access")
public Tools(){
//Set layouts
this.panel.setLayout(new BorderLayout());
//Add to the bar
this.bar.add(file,BorderLayout.WEST);
//add things to the inside of the bar
this.file.add(this.exit);
this.panel.add(this.bar);
//add panels
this.add(panel);
//action Commands
this.exit.setActionCommand("exit");
//add action Listeners
this.exit.addActionListener(this);
}
@Override
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand() == "exit"){
System.out.println("Closed");
System.exit(0);
}
}
}
/////
//GAMESCREEN CLASS BEGINS
////
public class GameScreen extends JPanel implements ActionListener{
private static final long serialVersionUID = 1L;
//Instance Variables
Scene scene = new Scene();
//JPanel variables
JPanel screen = new JPanel(new BorderLayout());
public GameScreen(){
//Sets the class layout
//Adding panels
this.add(screen);
//Setting the color
this.screen.setBackground(new Color(0,0,0));
//Adding things to the panels
this.screen.add(scene);
}
@Override
public void actionPerformed(ActionEvent e) {
}
public void paintComponent(Graphics g){
scene.drawScence(g, "Backgound.jepg", 0, 0, 600, 600);
}
}
public class Scene extends JPanel{
public Scene(){
}
public void drawScence(Graphics g,String location,int x,int y,int width,int height){
try{
URL url = this.getClass().getResource(location);
Image image = ImageIO.read(url);
g.drawImage(image, x, y, width, height, null);
}catch (Exception e){
System.out.println("Unable to load image.");
}
}
}
}