Java-在全屏模式下添加图像(在Java示例书中开发游戏)
我正在努力学习David Brackeen写的一本名为“用Java开发游戏”的书。在第2章中,有一个如何将图像添加到全屏应用程序的示例。他所做的是添加一个JPG背景图像,然后添加4个PNG图像。我试着像往常一样,看着书自己写代码。它不起作用 我搜索了代码中的错误,更改了一些东西,尝试了不同的东西,但都不起作用。然后我试着使用他自己的代码,我从他的网站下载的。那也没用。。我试图找到另一种添加图像的方法,现在我整个上午都在搜索。。我似乎想不出一种方法可以用其他任何方式将图像实现到这本书中所写的类中。。我的Java编程水平还不够高 我试着尽可能多地理解书中的代码,我想我理解了其中的大部分。我只是不明白为什么这些图像没有出现。如果有人能在正确的轨道上帮助我,我将不胜感激。下面是从作者网站下载的图像加载文件的代码(我修改了括号和一些空格,以便更容易阅读)Java-在全屏模式下添加图像(在Java示例书中开发游戏),java,image,swing,fullscreen,Java,Image,Swing,Fullscreen,我正在努力学习David Brackeen写的一本名为“用Java开发游戏”的书。在第2章中,有一个如何将图像添加到全屏应用程序的示例。他所做的是添加一个JPG背景图像,然后添加4个PNG图像。我试着像往常一样,看着书自己写代码。它不起作用 我搜索了代码中的错误,更改了一些东西,尝试了不同的东西,但都不起作用。然后我试着使用他自己的代码,我从他的网站下载的。那也没用。。我试图找到另一种添加图像的方法,现在我整个上午都在搜索。。我似乎想不出一种方法可以用其他任何方式将图像实现到这本书中所写的类中。
看看它。。。我没有看到任何使JFrame可见的东西 要在第48行的“screen.setFullScreen(displayMode,this);”之前添加“setVisible(true);”吗
如果这不起作用-您能确认您正在使用此SimpleScreenManager吗 多亏了Java论坛上的一位主持人,我才发现问题出在图片路径上。当我添加了一个完整的路径而不是只使用“folderName/imageName”时,它起了作用。奇怪,但它现在可以工作了 在“screen.setFullScreen(displayMode,this);”之前添加“setVisible(true);”,删除了全屏,使其成为屏幕左上角的一个小窗口:/:是的,这就是我正在使用的窗口!谢谢你的回复!(:
import java.awt.*;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
public class ImageTest extends JFrame
{
public static void main(String[] args)
{
DisplayMode displayMode;
if (args.length == 3)
{
displayMode = new DisplayMode(
Integer.parseInt(args[0]),
Integer.parseInt(args[1]),
Integer.parseInt(args[2]),
DisplayMode.REFRESH_RATE_UNKNOWN);
}
else
{
displayMode = new DisplayMode(800, 600, 16, DisplayMode.REFRESH_RATE_UNKNOWN);
}
ImageTest test = new ImageTest();
test.run(displayMode);
}
private static final int FONT_SIZE = 24;
private static final long DEMO_TIME = 10000;
private SimpleScreenManager screen;
private Image bgImage;
private Image opaqueImage;
private Image transparentImage;
private Image translucentImage;
private Image antiAliasedImage;
private boolean imagesLoaded;
public void run(DisplayMode displayMode)
{
setBackground(Color.blue);
setForeground(Color.white);
setFont(new Font("Dialog", Font.PLAIN, FONT_SIZE));
imagesLoaded = false;
screen = new SimpleScreenManager();
try
{
screen.setFullScreen(displayMode, this);
loadImages();
try
{
Thread.sleep(DEMO_TIME);
}
catch (InterruptedException ex){}
}
finally
{
screen.restoreScreen();
}
}
public void loadImages()
{
bgImage = loadImage("images/background.jpg");
opaqueImage = loadImage("images/opaque.png");
transparentImage = loadImage("images/transparent.png");
translucentImage = loadImage("images/translucent.png");
antiAliasedImage = loadImage("images/antialiased.png");
imagesLoaded = true;
// signal to AWT to repaint this window
repaint();
}
private Image loadImage(String fileName)
{
return new ImageIcon(fileName).getImage();
}
public void paint(Graphics g)
{
// set text anti-aliasing
if (g instanceof Graphics2D)
{
Graphics2D g2 = (Graphics2D)g;
g2.setRenderingHint(
RenderingHints.KEY_TEXT_ANTIALIASING,
RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
}
// draw images
if (imagesLoaded)
{
g.drawImage(bgImage, 0, 0, null);
drawImage(g, opaqueImage, 0, 0, "Opaque");
drawImage(g, transparentImage, 320, 0, "Transparent");
drawImage(g, translucentImage, 0, 300, "Translucent");
drawImage(g, antiAliasedImage, 320, 300, "Translucent (Anti-Aliased)");
}
else
{
g.drawString("Loading Images...", 5, FONT_SIZE);
}
}
public void drawImage(Graphics g, Image image, int x, int y, String caption)
{
g.drawImage(image, x, y, null);
g.drawString(caption, x + 5, y + FONT_SIZE + image.getHeight(null));
}
}