首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的JFrame上不显示平台雪碧图

我的JFrame上不显示平台雪碧图
EN

Stack Overflow用户
提问于 2011-12-10 13:03:57
回答 1查看 226关注 0票数 0

我是Java大学学分课程的10年级学生,我正在做一些额外的学分工作,在平台游戏中,角色必须跳到敌人身上才能杀死他们,但它不让我在JFrame上显示图像。由于某些原因,它们根本不会加载。

第一类:Main

代码语言:javascript
复制
package game1;

import java.awt.*;
import java.awt.event.*;
import javax.swing.JFrame;

public class Main extends JFrame{

    public class AL extends KeyAdapter {
        @Override
        public void keyPressed(KeyEvent e){
            int keyCode = e.getKeyCode();

        }
        public void keyRelease(KeyEvent e){

        }
    }

第二类:屏幕

代码语言:javascript
复制
    package game1;

    import java.awt.*;
    import javax.swing.JFrame;

public class Screen {

    private GraphicsDevice vc;

    public Screen(){
        GraphicsEnvironment env = GraphicsEnvironment.getLocalGraphicsEnvironment();
        vc = env.getDefaultScreenDevice();
    }

    public void setFullScreen(DisplayMode dm, JFrame window){
        window.setUndecorated(true);
        window.setResizable(false);
        vc.setFullScreenWindow(window);

        if(dm != null && vc.isDisplayChangeSupported()){
            try{
                vc.setDisplayMode(dm);
            }catch(Exception ex){}
        }
    }

    public Window getFullScreenWindow(){
        return vc.getFullScreenWindow();

    }

    public void restoreScreen(){
        Window w = vc.getFullScreenWindow();
        if(w != null){
            w.dispose();

        }
        vc.setFullScreenWindow(null);
    }
}

第三类:图像类

代码语言:javascript
复制
package game1;

import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.*;


public class ImageClass extends JFrame{
    public static void main(String[] args) {

        DisplayMode dm = new DisplayMode(800,600,16,DisplayMode.REFRESH_RATE_UNKNOWN);
        ImageClass i = new ImageClass();
        i.run(dm);

    }
    private Screen s;
    /*private Image bg;
    private Image pic;*/
    private boolean loaded;


        //private ImageIcon bg;
        private BufferedImage bg;
        //private JLabel label1;
        //private ImageIcon pic;
        private BufferedImage pic;
       // private JLabel label2;

        ImageClass(){
            setLayout(new FlowLayout());

            //bg = new ImageIcon(getClass().getResource("C:\\Users\\Ana Masters\\Desktop\\sprites\\char.gif"));

            try
            {
            bg = ImageIO.read(new File("char.gif"));
            pic = ImageIO.read(new File("dude.jpg"));
            }
            catch (Exception e)
            {

            }
            //label1 = new JLabel(bg);
            //add(label1);

            //pic = new ImageIcon(getClass().getResource("C:\\Users\\Ana Masters\\Desktop\\sprites\\dude.jpg"));
            //label2 = new JLabel(pic);
            //add(label2);

        }



    //run method
    public void run(DisplayMode dm){
        setBackground(Color.WHITE);
        //setForeground(Color.WHITE);
        setFont(new Font("Arial", Font.PLAIN,50));
        loaded = false;

        s = new Screen();
        try{
            s.setFullScreen(dm, this);
            loadpics();
            try{
                Thread.sleep(10000);
            }catch(Exception ex){}
        }finally{
            s.restoreScreen();
        }
    }
    //load pastures

    public void loadpics(){
        BufferedImage ba = null;
                try{
                    ba =ImageIO.read(new File("dude.jpg"));


                }catch(IOException i){

                }
                BufferedImage ab = null;
                try{
                    ab =ImageIO.read(new File("char.gif"));

                }catch(IOException b){

                }


                repaint();
        loaded = true;
    }


    @Override
    public void paint(Graphics g){
        //Image g2 = null;
       Graphics2D g2 = null;
            if(g instanceof Graphics2D){
                g2 = (Graphics2D)g;
        //g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.KEY_ANTIALIASING);

            }
        if(loaded){
            g2.drawImage(bg,570,580,null);
            g2.drawImage(pic,170,180,null);

            }
            else{
                System.out.println("not here");
            }


            }

}

如果有人能帮上忙,我将不胜感激。如何查找/加载图像?

EN

回答 1

Stack Overflow用户

发布于 2011-12-10 13:17:22

代码语言:javascript
复制
bg = new ImageIcon(getClass().getResource("C:\\Users\\Ana Masters\\Desktop\\sprites\\char.gif"));

对于使用getResource()找到的应用程序资源,它必须位于应用程序的运行时类路径上。这样的资源是使用/分隔的路径指定的,相对于类路径。例如,如果class-path的根是:

代码语言:javascript
复制
C:\\Users\\Ana Masters\\Desktop\\

GIF的位置应为:

代码语言:javascript
复制
bg = new ImageIcon(getClass().getResource("/sprites/char.gif"));

还要注意,将应用程序资源添加到也在应用程序的运行时类路径上的Jar中会更常见,也更有意义,而不是试图将它们定位为文件系统中的松散资源。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8454529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档