1

我正在研究 swing 和 java2D 中的图形程序的基础知识以进行练习。我遇到了无法显示图像的问题。我将我的代码分为 4 个类,这样当程序变大时,它更易于管理。

这个想法是我在 Main 中几乎没有什么,Frame 初始化我的第一个屏幕,屏幕都可以细分为它们自己的类,TitleScreen 就是其中之一,而 PullImage 完成所有缓冲和打印图像的工作打扰了我。

当我运行它时,我得到一个空窗口并且没有错误,所以我无法弄清楚问题出在哪里。

请并感谢您的帮助。

主要的

package com.game.pack;

import javax.swing.JFrame;

public class Main extends JFrame {

private static final long serialVersionUID = 1L;

public final static void main(String[] args) 
{

    new Frame().initialize();
    new TitleScreen().openScreen();

}
}

框架

package com.game.pack;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class Frame extends JFrame{

private static final long serialVersionUID = 1L;

public final void initialize()
{
    JFrame frame = new JFrame("Game");
    JPanel panel = new JPanel();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(800,600);
    panel.setSize(800,600);
    frame.setLayout(null);
    panel.setLayout(null);
    frame.setLocationRelativeTo(null);
    this.getContentPane().add(panel);
    panel.setVisible(true);
    frame.setVisible(true);
}

public final void close()
{
    dispose();
}

}

标题画面

package com.game.pack;

public class TitleScreen {

    public void openScreen()
    {
        new PullImage().printARGB("icons/titleBG.png",800,600,0,0);
        new PullImage().printARGBFromSheet("icons/titleButtons.png",
            200, 125, 400, 200, 200, 40, 0, 0);
        while (1!=2)
    {
}

拉取图像

package com.game.pack;

import java.awt.Graphics;
import java.awt.Image;
import java.awt.image.BufferedImage;
import javax.swing.ImageIcon;

public class PullImage {

public void printARGB(String source, int sizeX, int sizeY, int locX, int locY)
{
    Image Icon = new ImageIcon(source).getImage();
    BufferedImage BuffedImage = new BufferedImage(sizeX, sizeY, BufferedImage.TYPE_INT_ARGB);
    Graphics graphics = BuffedImage.getGraphics();
    graphics.drawImage(Icon,locX,locY,null);
}

public void printARGBFromSheet(String source, int sizeX, int sizeY, int locX, int locY, int width, int height, int sheetLocX, int sheetLocY)
{
    Image Icon = new ImageIcon(source).getImage();
    BufferedImage BuffedImage = new BufferedImage(sizeX,sizeY,BufferedImage.TYPE_INT_ARGB);
    Graphics graphics = BuffedImage.getGraphics();
    graphics.drawImage(Icon, locX, locY, locX+width, locY+height, sheetLocX, sheetLocY, sheetLocX+width, sheetLocY+height, null);
}


}
4

1 回答 1

0

这里有一个问题:

public final void initialize()
{  
    this.getContentPane().add(panel);
}

这是将框架的内容窗格设置为面板,而不是您创建的 JFrame。本质上,您并没有将其添加到实际的可见窗口中。只需将其替换为

frame.getContentPane().add(panel);
于 2012-10-30T03:31:44.117 回答