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

我所拥有的是一个透明窗口,该窗口将提供要捕获的区域,上面带有一个按钮capture,并且我试图实例化一个类captureScreen,该类在单独使用一个文件在单独文件中执行时效果很好command prompt

我试图在按下按钮captureScreen时实例化此capture类。
但这是行不通的。
从此文件实例化时,保持captureScreen.java分离不会执行任何操作,因为

captureScreen a = new captureScreen();


System.out.println("Start");甚至不会打印任何内容,尽管从command prompt运行时它可以完美工作

java captureScreen


这是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();

            System.out.println("Donesssssss");
        }
    }
}

class captureScreen extends Object{

    public int captureScreen(){
        ...
        Robot robot = new Robot();
        BufferedImage image = robot.createScreenCapture(screenRectangle);

        ImageIO.write(image, "png", new File(filename));
        System.out.println("Done");
        return 1;}
        catch(AWTException ex)
        {
            System.out.println("Error"+ex);
            return 1;
        }
        catch(IOException ex)
        {
            System.out.println("Error"+ex);
            return 1;
        }

    }
}

最佳答案

public int captureScreen(){不是构造函数,它是一个方法,因此调用captureScreen a = new captureScreen()不会激活此方法。

你可以...

对其进行更改,使其成为构造函数

public captureScreen() {...}


或者你可以...

调用方法...

captureScreen a = new captureScreen();
a.captureScreen();


现在。欢迎来到为什么要遵循naming conventions for the Java language的原因之一,因为如果您有...的话,您将能够分辨出方法和构造函数之间的区别。

即,类以大写字母即CaptureScreen开头,这使构造函数遵循相同的命名方式public CaptureScreen(){...},而方法以小写字母开头。

只是说

关于java - 类未实例化,无法使用actionlistener正常工作,单独工作正常,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17230449/

10-10 03:04