#netbeans #worldwind
#netbeans #worldwind
Вопрос:
Я пытаюсь добавить слой в WorldWind Java (версия 1.2), расположенный на платформе Netbeans TopComponent (с использованием netbeans 7.0). TopComponent находится в режиме редактора, и для WWJ я использую WorldWindowGLCanvas, который является единственным компонентом swing в TopComponent и помещается в BorderLayout .ЦЕНТР. Если я добавляю слои с помощью конструктора, все работает хорошо, я могу видеть слои нормально. Если я добавляю слой с помощью элементов управления swing (например, кнопки), слой добавляется в список слоев, но он не отображается. Это происходит как для WMS, так и для отображаемого слоя. Тот же процесс в чистом приложении swing работает нормально, что наводит меня на мысль, что процесс рендеринга в WWJ каким-то образом противоречит изображению TopComponent. Любая помощь с благодарностью.
Ответ №1:
Я настроил демонстрационную версию с использованием платформы NetBeans (7.0.1) с gov.nasa.worldwind.awt.WorldWindowGLCanvas
и gov.nasa.worldwindx.examples.LayerPanel
Код инициализации:
private void initComponents() {
canvas = new WorldWindowGLCanvas();
Model model = (Model) WorldWind.createConfigurationComponent(AVKey.MODEL_CLASS_NAME);
canvas.setModel(model);
layerPanel = new LayerPanel(canvas);
setLayout(new BorderLayout());
add(canvas, BorderLayout.CENTER);
add(layerPanel, BorderLayout.WEST);
}
private WorldWindowGLCanvas canvas;
private LayerPanel layerPanel;
Это работает так же, как и при запуске образца как отдельного, поэтому я бы сказал, что проблема заключается не в платформе NetBeans. Без какого-либо кода трудно сказать, что происходит не так.
Обратите внимание, что gov.nasa.worldwind.awt.WorldWindowGLCanvas
это не компонент Swing, а компонент с большим весом. Это не имеет отношения к вашему вопросу, но я не мог не указать на это. Компонент Swing является gov.nasa.worldwind.awt.WorldWindowGLJPanel
Редактировать: я понимаю, что мой ответ не очень полезен, поэтому, чтобы исправить это, я бы добавил предложение. Вы можете попытаться аннулировать TopComponent и вызывать repaint всякий раз, когда вам это нужно для рендеринга нового слоя.
Комментарии:
1. Проблема оказалась в поиске — то, как мы использовали lookup, создало еще один экземпляр WWJ — мы обошли это, сохранив статическую ссылку на WorldWindowGLCanvas.