0

なぜこの 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.");
            }

        }
    }
}
4

0 に答える 0