仅拍摄完整的JFrame和仅Jframe的快照[重复]

问题描述 投票:1回答:1

[伙计们,我已经开发了一个代码来捕获整个屏幕的屏幕快照,但是我希望它仅捕获Jframe内部内容的屏幕快照。以后会用它来打印图像。主要问题之一是鼠标也位于快照内部。我不希望鼠标或底部的两个按钮。我可以只更改按钮的可见性,但是对鼠标和仅在Jframe中拍摄应该怎么做?这是我的代码,它需要整个屏幕的屏幕截图。

                try{
                Thread.sleep(1000);
                Toolkit tk = Toolkit.getDefaultToolkit(); //Toolkit class                         returns the default toolkit
                Dimension d = tk.getScreenSize();

//Dimension class object stores width & height of the toolkit screen
// toolkit.getScreenSize() determines the size of the screen

                Rectangle rec = new Rectangle(0, 0, d.width, d.height);  
//Creates a Rectangle with screen dimensions,         

                Robot ro = new Robot(); //to capture the screen image
                BufferedImage img = ro.createScreenCapture(rec);



                File f;
                f = new File("myimage.jpg"); // File class is used to write the above generated buffered image to a file
                ImageIO.write(img, "jpg", f);

            } catch (Exception ex) {
                System.out.println(ex.getMessage());
            }
java swing awt awtrobot
1个回答
3
投票

恕我直言,最好为您的组件制作图像(JFrame也是Component:]

BufferedImage img = new BufferedImage(yourComponent.getWidth(), yourComponent.getHeight(), BufferedImage.TYPE_INT_RGB);
yourComponent.paint(img.getGraphics());
File outputfile = new File("saved.png");
ImageIO.write(img, "png", outputfile);
© www.soinside.com 2019 - 2024. All rights reserved.