我正在编写一个图形用户界面以在 xy 轴上绘制数据。它是用 Java Swing 编写的,因此我有一个包含整个 GUI 的 JFrame
。 GUI 的组件之一是构成数据绘制区域的 JPanel
。我使用 Graphics2D
进行绘图。
我正在尝试对该程序进行命令行扩展。这个想法是用户可以在配置文件中指定他们想要绘制的数据。这允许进行有趣的参数扫描,从而节省大量时间。
当我尝试获取一个 Graphics
对象来绘制时出现问题。我创建了用于绘图的 JPanel
,但是当我调用 paintComponent()
时,Graphics
对象为 null。
此外,当您运行该程序(再次从命令行)时,它会从您尝试执行的任何其他操作中窃取焦点(如果该程序在后台运行)。无论如何要解决这个问题?是否必须创建一个 JPanel
才能进行绘图?
感谢您提供的任何帮助!
附言当我说我从命令行运行程序时,我的意思是说您没有使用 GUI。所有的绘图等都是在没有界面的情况下完成的。另外,我知道您无法实例化 Graphics
对象。
最佳答案
使用 java.awt.image.BufferedImage
BufferedImage image = new BufferedImage(100, 100, BufferedImage.TYPE_INT_RGB);
Graphics2D g = image.createGraphics();
//.. draw stuff ..
ImageWriter writer = ImageIO.getImageWritersByFormatName("png").next();
writer.setOutput(ImageIO.createImageOutputStream(new File("myimage.png"));
writer.write(image);
关于java - 在没有 JPanel 的情况下用 Java 绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3161955/