Запуск JPanels в собственных темах. - PullRequest
1 голос
/ 16 июля 2010

У меня проблемы с компонентами Swing.

В одном JFrame у меня есть GLCanvas и JEditorPane, разделенные JSplitPane. Эта конфигурация делает прерывистый отклик в обеих панелях.

Однако, когда я помещаю GLCanvas и JEditorPane каждый в свои JFrame, отклик дисплея велик.

Я бы предположил, что это связано с тем, что во втором случае все операции с этими компонентами выполняются в отдельных потоках. Если так, мои вопросы следующие:

Можно ли запускать компоненты в собственных потоках? Или есть лучший способ, которым я должен делать это?

Спасибо за любую помощь, которую вы можете предоставить.

Ответы [ 3 ]

4 голосов
/ 16 июля 2010

Я подозреваю, что низкая производительность в первом случае больше связана с Смешивание тяжелых и легких компонентов .Как и большинство графических API, Swing использует отдельный поток диспетчеризации событий для обновления экрана;Я предполагаю, что JOGL должен придерживаться того же ограничения.В то же время существует множество способов выполнять работу в другом потоке и взаимодействовать с графической средой.

1 голос
/ 16 июля 2010

Похоже, @trashgod прав.GLCanvas - это «тяжеловесный» компонент, происходящий от awt Canvas.Чтобы увидеть, действительно ли это случай , я предлагаю заменить GLCanvas на GLJPanel, который является потомком компонента Swing от JPanel.

1 голос
/ 16 июля 2010

Я думаю, что ваше предположение неверно. Все операции рисования Swing происходят в одном потоке.

Возможно, вы могли бы расширить описание «изменчивый»? Может быть, это проблема двойной буферизации по сравнению с двойной буферизацией?

...