3

画面キャプチャプログラムを作成しようとしています。

私が持っているのは透明なウィンドウで、キャプチャする領域にボタンが付いています。コマンドプロンプトを使用して個別に実行するとうまく機能captureするクラスをインスタンス化しようとしていますcaptureScreencaptureScreen

captureScreenボタンが押されたときにこのクラスをインスタンス化しようとしていますcapture

コードも入れて、これclassを に保持しようとしました。どちらの場合も、これらのエラーが発生しますscreenrecord.javaevent listener

AWTException,must be caught or declared

 Robot robot = new Robot();

および IOException がBufferedImage 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 に答える