无法使用按钮实例化类

时间:2013-06-20 17:48:25

标签: java swing actionlistener instantiation awtrobot

我正在尝试制作一个屏幕截图程序。

我所拥有的是一个透明窗口,它将使用一个按钮capture来捕获该区域,并且我正在尝试实例化一个在{{captureScreen时运行良好的类captureScreen 1}}使用命令提示符单独执行

我试图在按下captureScreen按钮时实例化此capture类。

我尝试将此class保留在screenrecord.java上,同时将代码放在event listener中。在这两种情况下,我都会遇到这些错误

AWTException,must be caught or declared

 Robot robot = new Robot();

BufferedImage image行中的IOException。

保持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");
    }

}

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

2 个答案:

答案 0 :(得分:4)

您需要使用try / catches。这些不是错误,而是警告。例如,在具有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

答案 1 :(得分:0)

适用于编辑captureScreen.java as,

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来实例化另一个函数。