2011-06-01 59 views
2

我想在程序的JFrame上显示我的屏幕的完整屏幕截图。 到目前为止,使用下面的代码,我只能够显示部分屏幕。 下面的代码是油漆的内容(图形g)。 如何让它全屏?Java Full Screenshot

// the screen resolution is 1280 x 1024 while the JPanel size is only 1024 x 768 
Dimension resolution = Toolkit.getDefaultToolkit().getScreenSize(); 
Rectangle rectangle = new Rectangle(resolution); 
robot = new Robot(); 
BufferedImage bufferedImage = robot.createScreenCapture(rectangle);         
g.drawImage(bufferedImage.getScaledInstance(bufferedImage.getWidth(), bufferedImage.getHeight(), Image.SCALE_DEFAULT), 0, 0, null); 
+2

嗯,你为什么不使用'新尺寸(1280,1024 )'而不是?或者我错过了什么? – BalusC 2011-06-01 03:03:14

+0

我放错了代码。我立即更新了它们。 – 2011-06-01 03:08:28

+0

我还是不明白具体问题。 – BalusC 2011-06-01 03:45:21

回答

1

//get the screen size 
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize(); 
BufferedImage image = robot.createScreenCapture (dim); 
//other code 
//... 

我看你有一些错误,我不知道,如果你的代码甚至编译“,因为引用似乎没有被声明,但类似于此代码的代码将会在您的桌面上添加一个屏幕截图:

import java.awt.geom.*; 
import java.awt.*; 
import java.awt.image.*; 
import javax.imageio.*; 
import java.io.*; 

public class ScreenCapturer 
{ 
    public static void main(String[] args)throws Exception 
    { 
     Dimension resolution = Toolkit.getDefaultToolkit().getScreenSize(); 
     Rectangle rectangle = new Rectangle(resolution); 
     Robot robot = new Robot(); 
     BufferedImage bufferedImage = robot.createScreenCapture(rectangle); 
     Graphics g = bufferedImage.getGraphics(); 
     //g.drawImage(bufferedImage.getScaledInstance(bufferedImage.getWidth(), bufferedImage.getHeight(), Image.SCALE_DEFAULT), 0, 0, null); 
     File out = new File("image.png"); 
     ImageIO.write(bufferedImage,"png",out); 
    } 
} 

我保存到一个PNG图像文件,而不是将其绘制在屏幕或框架上。

+0

我已经在代码中使用过它们。然而,同样的事情返回 – 2011-06-01 03:10:31

+0

看到我最后的编辑 – 2011-06-01 03:54:39

0
g.drawImage(bufferedImage.getScaledInstance(bufferedImage.getWidth(), bufferedImage.getHeight(), Image.SCALE_DEFAULT), 0, 0, null); 

通过每行仅使用一条语句来简化您的代码,那么您可能会理解代码。

为什么你是图像的宽度和高度?如果您指定图像的完整大小,这是如何缩放图像的?我猜你想:

Image scaled = bufferedImage.getScaledInstance(1024, 768, Image.SCALE_DEFAULT); 

现在不是定制做画你可以添加图片到JLabel:

ImageIcon icon = new ImageIcon(scaled); 
JLabel label = new JLabel(icon); 
frame.add(label);