java - 在没有 JPanel 的情况下用 Java 绘图

标签 java graphics jpanel

我正在编写一个图形用户界面以在 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/

相关文章:

java - 用于动画填充多边形的洪水的 Swing 计时器?

javascript - WebGL gl_FragColor alpha 在 Chrome 和 Firefox 中的行为不同

graphics - fedora 27 中 libgraph 安装 :- missing libgraph. so.1 文件出错

java - 是否可以移动 JMenuBar 而无需将其添加到 JPanel 中

java - 具有实现接口(interface)的对象的方法?

java - 在数据库中搜索文本(使用 Hibernate Search)

java - Tomcat6 Web 集群的 P2P Hazelcast session 复制 - session 同步失败

java - hql - 返回单个对象而不是列表?

java - 为什么 'JPanel' 不起作用?

java - 如何正确引用一个类(JPanel)中的刷新方法,以便可以从另一个类中的方法调用它?