Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将swing组件绘制为图形_Java_Swing_Graphics_Jpanel_Paint - Fatal编程技术网

Java 将swing组件绘制为图形

Java 将swing组件绘制为图形,java,swing,graphics,jpanel,paint,Java,Swing,Graphics,Jpanel,Paint,如何将组件(如JPanel)绘制到我选择的图形中, 就好像是屏幕一样 在谷歌上没有运气 我所尝试的: JPanel p = new JPanel(); p.setSize(32, 32); p.setLocation(8, 8); p.add(new JLabel(...)); p.add(new JLabel(...)); p.add(new ImageIcon(...)); Graphics g = getSomeGraphics(); p.paint(g); 但是,最后一条指令会导致

如何将组件(如JPanel)绘制到我选择的图形中, 就好像是屏幕一样

在谷歌上没有运气

我所尝试的:

JPanel p = new JPanel();
p.setSize(32, 32);
p.setLocation(8, 8);

p.add(new JLabel(...));
p.add(new JLabel(...));
p.add(new ImageIcon(...));

Graphics g = getSomeGraphics();
p.paint(g);
但是,最后一条指令会导致

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at javax.swing.RepaintManager.getVolatileOffscreenBuffer(Unknown Source)
    at javax.swing.RepaintManager$PaintManager.paint(Unknown Source)
    at javax.swing.BufferStrategyPaintManager.paint(Unknown Source)
    at javax.swing.RepaintManager.paint(Unknown Source)
    at javax.swing.JComponent.paint(Unknown Source)
    ...
这说明了如何使用
panel.paint(g2d)
buffereImage
中呈现
JLabel
实例的现有
JPanel
。然后缩放图像并显示在面板下方以供参考

你可以假设我正在绘制一个BuffereImage,事实上,我有时会这样做


请参阅,这也可以创建组件映像。

此答案可能会对您有所帮助。.您如何获得
图形
?通常,人们会使用
BufferedImage
来处理这种类型的东西,并在上面绘制(使用它的
Graphics
)。我假设您基本上是在尝试将组件绘制到图像中,尽管我不太确定。您可能正在使用
getGraphics
-不要这样做。查看可能的副本,而不是JFrame,只是一个组件!我必须只画整个画面,而不是整个画面。你可以假设我正在绘制一个BuffereImage,事实上,我有时会这样做。我刚刚意识到这与@Andrew的工作方式相同。如果我不能制作一个JFrame将我的组件放入其中会怎么样?你的示例之所以有效,是因为它将()组件添加到另一个容器JPanel中,但在我的应用程序中,我没有JFrame(),也不能使用任何其他容器。@camickr's可能在这种情况下工作。