0

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

私が持っているのは、キャプチャする領域をボタン付きで提供する透明なウィンドウ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;
        }

    }
}
4

2 に答える 2

3

public int captureScreen(){はコンストラクターではなくメソッドであるため、呼び出してcaptureScreen a = new captureScreen()もこのメソッドはアクティブになりません。

あなたは出来る...

コンストラクタになるように変更します

public captureScreen() {...}

それとも...

メソッドを呼び出す...

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

今。Java 言語の命名規則に従う必要がある理由の 1 つへようこそ。

つまり、クラスは大文字 ieCaptureScreenで始まる名前が付けられます。これにより、コンストラクターは同じ名前に従い、public CaptureScreen(){...}メソッドは小文字で始まります。

ただ言って

于 2013-06-21T08:19:03.777 に答える
0

次のようなコードを持つクラスcaptureScreen

public int captureScreen(){..}

これをコンストラクターと見なした場合は、戻り値の型を使用しないでください。

public captureScreen(){..}

これをメソッドと見なした場合は、actionPerformed からこのメソッドを呼び出してみてください。

captureScreen a = new captureScreen();
a.captureScreen();
于 2013-06-21T08:24:09.757 に答える