Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.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 创建线程以重复捕获屏幕_Java_Exception_Jframe_Bufferedimage - Fatal编程技术网

Java 创建线程以重复捕获屏幕

Java 创建线程以重复捕获屏幕,java,exception,jframe,bufferedimage,Java,Exception,Jframe,Bufferedimage,我不知道出了什么问题。 如果你能找出这个错误 更新: 现在,尽管NullPointerException已消失,但该帧是空白的,而不应是 为什么? JFrame在显示之前不会向您提供任何图形 如果您想在显示JFrame之前绘制,则永远不应这样做: frame.getGraphics().drawImage(screenShots.firstElement(), 0, 0,frame); 因为: 不要使用Component.getGraphics()。相反,子类化并重写paint()(AWT)

我不知道出了什么问题。
如果你能找出这个错误

更新: 现在,尽管
NullPointerException
已消失,但该帧是空白的,而不应是


为什么?
JFrame
在显示之前不会向您提供任何
图形

如果您想在显示
JFrame
之前绘制,则永远不应这样做:

frame.getGraphics().drawImage(screenShots.firstElement(), 0, 0,frame);
因为:

不要使用Component.getGraphics()。相反,子类化并重写paint()(AWT)或paintComponent()(Swing)方法

getGraphics()根本无法工作。Java使用回调机制绘制图形。您不应该使用getGraphics()将图形信息“推”到组件中。相反,您应该等待Java调用您的paint()/paintComponent()方法。此时,您应该向组件提供您想要绘制的图形

相反,你最好做以下事情:

frame.pack();
frame.setSize(recordingArea.width, recordingArea.height);
Graphics g = frame.getContentPane().getGraphics();
g.drawImage(screenShots.firstElement(), 0, 0, frame);

JFrame
在显示之前不会向您提供任何
图形

如果您想在显示
JFrame
之前绘制,则永远不应这样做:

frame.getGraphics().drawImage(screenShots.firstElement(), 0, 0,frame);
因为:

不要使用Component.getGraphics()。相反,子类化并重写paint()(AWT)或paintComponent()(Swing)方法

getGraphics()根本无法工作。Java使用回调机制绘制图形。您不应该使用getGraphics()将图形信息“推”到组件中。相反,您应该等待Java调用您的paint()/paintComponent()方法。此时,您应该向组件提供您想要绘制的图形

相反,你最好做以下事情:

frame.pack();
frame.setSize(recordingArea.width, recordingArea.height);
Graphics g = frame.getContentPane().getGraphics();
g.drawImage(screenShots.firstElement(), 0, 0, frame);

测试第一个屏幕截图是否为空。@Aaron选中,它不是空的。您确定添加了以下行:
frame.getContentPane().add(l)?如果是,请在修改后显示代码,尤其是显示帧。@Xeon u可能想看看这个:测试第一个屏幕截图是否为空。@Aaron检查过,它不是空的。是否确实添加了行:
frame.getContentPane().add(l)?如果是这样的话-特别是在修改后显示代码-显示帧。@Xeon u可能希望看到: