3

我正在尝试制作屏幕捕获程序。

我所拥有的是一个透明窗口,它将提供要捕获的区域,上面有一个按钮capture,我正在尝试实例化一个在使用命令提示符单独执行captureScreen时效果很好的类captureScreen

我试图captureScreen在按下按钮时实例化这个类capture

我已经尝试将其保留class在我的 上screenrecord.java,并将代码event listener也放入其中。在这两种情况下,我都会收到这些错误

AWTException,must be caught or declared

 Robot robot = new Robot();

和 IOExceptionBufferedImage image一致。

保持captureScreen.java分离没有任何作用。System.out.println("Start");甚至不会打印任何东西。

这是我的screenrecord.java代码

public class screenrecord extends JFrame implements ActionListener{
    public screenrecord() {...
    }
    public void actionPerformed(ActionEvent e){
        if ("record".equals(e.getActionCommand())) {
            captureScreen a = new captureScreen();
            } 
    }   
}

并且captureScreen.java,单独工作正常。

public class captureScreen extends Object{

    public static void main(String args[]){
        ...
        Robot robot = new Robot();
        BufferedImage image = robot.createScreenCapture(screenRectangle);
        ImageIO.write(image, "png", new File(filename));
        System.out.println("Done");
    }

}

欢迎和赞赏您的所有建议、意见和建议。请帮我解决这个问题。谢谢。

4

2 回答 2

4

您需要使用 try/catch。这些与其说是错误不如说是警告。例如,在有 AWTException 的代码周围插入这个:

try
{
    //code causing AWTException
    Robot robot = new Robot();
}
catch(AWTException e)
{
    System.out.println("Error"+e);
}

和:

try
{
    //code causing IOException
    BufferedImage image = robot.createScreenCapture(screenRectangle);
}
catch(IOException e)
{
    System.out.println("Error"+e);
}

或将两者结合起来:

try
{
    //code causing AWTException or IOException
    Robot robot = new Robot();
    BufferedImage image = robot.createScreenCapture(screenRectangle);
}
catch(IOException e)
{
    System.out.println("Error"+e);
}
catch(AWTException e)
{
    System.out.println("Error"+e);
}

为了进一步阅读,这可能有助于澄清例外情况:

http://docs.oracle.com/javase/tutorial/essential/exceptions/definition.html

于 2013-06-20T17:54:27.493 回答
0

用于编辑captureScreen.javaas,

public class captureScreen extends Object{

    public captureScreen() {
        ....
        filename = ".\\out.png";
        try{Robot robot = new Robot();
             ............ }
        catch(Exception e)  /* Catch Exceptions too  */
        {
            System.out.println("Error"+e);
        }
    }

    public static void main(String args[]){
        new captureScreen();
    }
}

使用 main 实例化另一个函数。

于 2013-06-21T08:59:01.187 回答