java截全屏_Java全屏截图

我正在开发一个游戏项目,并且我编写了一些基本代码,允许游戏全屏运行.

我的问题是,当游戏处于全屏模式时,我无法按Prnt Scrn截取屏幕截图!如果我尝试截取屏幕截图,它只是屏幕截图全屏游戏窗口后面的内容.任何想法为什么这不起作用?

我在Windows 7上运行.这是一个说明我的问题的SSCCE:

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class FullscreenScreenShotSSCCE extends JFrame

{

private JPanel screenP;

private GraphicsDevice grDev;

/**

* Constructor

* Preconditions: None.

* Postconditions: The window for the SSCCE is created.

**/

public FullscreenScreenShotSSCCE()

{

super("Fullscreen Prnt Scrn problem SSCCE");

int screenX = 640;

int screenY = 480;

this.setSize(screenX,screenY);

// set up resolution change mode

grDev = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice(); // obtains your graphics device

// setup the game for full-screen if requested.

System.out.println("Trying to start program in Fullscreen mode.");

if(grDev.isFullScreenSupported()) // makes sure fullscreen is supported before doing anything.

{

System.out.println("FullScreen is supported");

this.setUndecorated(true);

DisplayMode resChangeMode = new DisplayMode(640,480,32,DisplayMode.REFRESH_RATE_UNKNOWN); // create new DisplayMode with different resolution.

try

{

grDev.setFullScreenWindow(this); // set fullscreen mode on. Otherwise this won't work

grDev.setDisplayMode(resChangeMode); // change DisplayMode to our new resolution.

System.out.println("Change resolution: Success!");

}

catch(Exception e)

{

System.out.println("Change resolution: FAIL!");

}

}

this.setExtendedState(MAXIMIZED_BOTH);

// instantiate main panel

screenP = new SSCCEPanel();

this.add(screenP);

// finishing touches on Game window

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);

System.out.println("Game Window successfully created!!!");

}

public static void main(String[] args)

{

FullscreenScreenShotSSCCE gui = new FullscreenScreenShotSSCCE();

}

}

/**

* SSCCEPanel is the JPanel that manages the example's timer, painting, and logic.

**/

class SSCCEPanel extends JPanel

{

private Timer timer;

public double prevFPS;

boolean timerReady;

// The SoundPlayer object is used by the example to play the sounds.

public SSCCEPanel()

{

super(true);

}

/**

* repaints the SSCCE.

* This just shows the current FPS and the number of sounds currently playing.

**/

public void paintComponent(Graphics g)

{

super.paintComponent(g);

Graphics2D g2D = (Graphics2D) g;

g2D.setColor(new Color(0x000000));

g2D.drawString("Java fullscreen!", 20,20);

g2D.drawString("Try to take a screenshot!", 20,40);

g.dispose();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值