Java等待方法返回对象

时间:2014-07-29 11:54:51

标签: java multithreading oop user-interface

我正在创建一个库,应用程序可以使用它来捕获选定的屏幕并将其转换为图像,如Gyazo。

这个库不是应用程序本身,而只是将File或BufferedImage对象返回给应用程序的工具。

我希望应用程序很简单:

Bootstrap b = new Boostrap(new GifCapturer());
b.beginCapture(); // user selects an area
File file = b.getFile();

但是如何使应用程序等到库返回对象?如您所见,beginCapture方法应该激活JFrame,用户将选择要捕获的区域。

我需要睡觉吗?或使用听众设计?

beginCapture方法启动一个jframe窗口,用户可以在其中选择屏幕区域。选择后,库会将所选区域转换为对象并将其设置为局部变量。因此,当您使用getFile时,它将返回捕获的图像。但问题是,我需要确保在执行getFile调用之前选择了图像,然后等待,但我不确定如何。

对不起,如果问题不详细,我打电话。 如果您需要更多信息,请与我们联系。

2 个答案:

答案 0 :(得分:0)

实现一个侦听器,在选择准备就绪后立即调用。将您的File file = b.getFile();代码放入监听器。

您的JFrame代码有必要提供更详细的答案。

答案 1 :(得分:0)

我决定使用一个具有自己构建的侦听器类和接口的侦听器。 创建一个用于获取数据的接口,或者在监听器被调用时知道的接口,就像我的情况一样:

public static void main(String[] args) throws AWTException {
    Bootstrap b = new Bootstrap(new GifCapturer());
    b.beginCapture(new ScreenCaptureCallback() {
        @Override
        public void captureEnded(File file) {
            System.out.println("done!");
        }
    });
}