gpt4 book ai didi

java - 我无法获取我想要的 JFrame 的屏幕截图

转载 作者:行者123 更新时间:2023-12-02 05:59:50 29 4
gpt4 key购买 nike

我有这个代码:`

import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import java.io.File;

import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;


public class Provare extends JFrame {

private JPanel contentPane;
public static int x=100;
public static int y=100;

/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
x=(int) (100+(x*(Math.random()*3)));
y=(int) (100+(y*(Math.random()*3)));
Provare frame = new Provare();
frame.setVisible(true);
BufferedImage image = new BufferedImage(frame.contentPane.getWidth(),frame.contentPane.getHeight(),BufferedImage.TYPE_INT_RGB );
frame.contentPane.printAll(image.getGraphics());
ImageIO.write(image, "bmp", new File("C:/Users/Resco/Desktop/scarpe/screen.bmp") );
} catch (Exception e) {
e.printStackTrace();
}
}
});
}

/**
* Create the frame.
*/
public Provare() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, x, y);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
}

public void paint(Graphics g){
super.paint(g);
g.drawString("CIAO",(x/2),(x/2));
g.drawLine(50, 50, 100, 100);
}

}

`

我想要得到的是带有文本 CIAO 和一行的屏幕截图。我实际上得到的是一个空元素的屏幕截图。

有什么建议吗?请随意发布我的代码的修改版本。

提前致谢。

最佳答案

您正在图像上打印 contentPane 内容:contentPane 没有任何可打印的内容,它是空的。

你必须使用

frame.printAll(image.getGraphics());

旁注:您不应覆盖 JFrame 中的 paint 方法来执行自定义绘制。而是重写 JPanel 中的 paintComponent 方法。

关于java - 我无法获取我想要的 JFrame 的屏幕截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22765095/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com