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可能希望看到: