下面是我所描述的一个小例子
好吧,我有一个简单的JFrame
JPanel
作为contentPane
repaint
SwingWorker
panel.repaint()
每20毫秒JDialog
}。
另外,我打开了AWTGLCanvas
,用opengl显示了自己的图形(我使用了来自LWJGL
库的repaint()
)每次交换缓冲区和JPanel
确实绘制其内容(快于20毫秒)。
最大的问题是,在某种程度上重新粉刷我的JDialog
也会影响panel.repaint()
,这意味着如果我删除panel.repaint()
(我已经完成)它就可以了!当我有JDialog
public testFrame(){
panel = new JPanel(){
protected void paintComponent(Graphics g){
//do the painting for the JPanel here
}
}
setContentPane(panel);
updateTime();
}
public void updateTime(){
SwingWorker worker = new SWingWorker(){
@Override
protected Object doInBackground() throws Exception {
while(stopTimer == false){
Thread.sleep(20);
if(isFocused() == true){
timer += 0.2f;
panel.repaint();
}
}
return null;
}
};
worker.execute();
}
显示一些奇怪的线条,比如我将图形切成2并试图将它们移动到一起但没有成功。我不知道他们是否称它为闪烁但可能是那个问题。
AWTGLCanvas.paint
这是JDialog contentPane
@Override
public void paintGL() {
//do some painting with classic opengl
swapBuffers(); //awtglcanvas built-in method, meaning i cant control it
repaint(); // it actually runs paintGL() again
}
方法
{{1}}
提前致谢!