我正在尝试制作一个屏幕捕获程序。
我所拥有的是一个透明窗口,该窗口将提供要捕获的区域,上面带有一个按钮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/