GLJPanel перестает перерисовывать - PullRequest
0 голосов
/ 14 июля 2011

Я использую Jogl для создания GLJPanel внутри проекта модуля платформы Netbeans (это очень специфический тип Java-приложения, которое создает модульное окно в приложении платформы NetBeans, поэтому есть несколько окон, которые можно перетаскивать).

Я не могу использовать GLCanvas, потому что он не работает в Windows или Linux (Netbeans и Jogl в значительной степени совпадают в аду).Я не могу использовать NEWT, потому что это не работает на Mac.Поэтому я использую GLJPanel, хотя он и медленный.

Во всяком случае, сначала он обычно работает.Затем, если я изменяю размер или делаю что-то еще в программе, окно, кажется, теряет фокус и никогда не восстанавливает его.Окно не будет перерисовываться.Я все еще получаю события мыши (никаких ключевых событий, хотя!).Я знаю это, потому что я могу нажать на другое окно, и оно перерисовает GLJPanel один раз.В противном случае экран не перерисовывается.

Я перепробовал все комбинации установки sun.java2d.opengl и sun.java2d.noddraw в true и false, согласно http://jogamp.org/deployment/jogamp-next/javadoc/jogl/javadoc/javax/media/opengl/awt/GLCanvas.html#java2dgl

Эточасть проекта с открытым исходным кодом, поэтому источник моего компонента находится по адресу

https://github.com/mtakemiya/BMIDesktop/blob/dfe63cc789d42bff99922f36b683bd88e64632df/timeline/src/jp/atr/dni/bmi/desktop/timeline/TimelineTopComponent.java

Я что-то делаю явно неправильно?

1 Ответ

0 голосов
/ 28 июля 2011

Я не установил бы эти флаги в true, потому что имелись некоторые ошибки с элементами графического интерфейса. Я закодировал мою программу без этих флагов, установленных в true. Я бы рекомендовал переопределить GLEventListener GLPanel или GLCanvas, если вы заставили его работать. Должно перекрашиваться постоянно. В ожидании вашего ответа, может быть, если вы дадите больше деталей, я могу вам помочь.

...