在JFrame中重新调用特定JPanel的重绘也是JDialog

时间:2014-06-27 07:02:14

标签: java swing lwjgl repaint

下面是我所描述的一个小例子

好吧,我有一个简单的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}}

提前致谢!

0 个答案:

没有答案