J'essaie d'ajouter une couche à WorldWind Java (version 1.2) située sur un TopComponent de la plateforme Netbeans (utilisant Netbeans 7.0). Le TopComponent est en mode éditeur, et pour WWJ j'utilise WorldWindowGLCanvas qui est le seul composant swing sur le TopComponent et il est placé avec BorderLayout.CENTER. Si j'ajoute les calques en utilisant le constructeur, tout fonctionne bien, je peux voir les calques. Si j'ajoute le calque à l'aide de contrôles dynamiques (par exemple un bouton), le calque est ajouté à la liste des calques, mais il n'est pas rendu. Cela se produit à la fois pour les couches WMS et Renderable. Le même processus sur une application purement swing fonctionne bien, ce qui m'amène à penser que le processus de rendu dans WWJ est en quelque sorte en conflit avec la peinture TopComponent. Toute aide sera grandement appréciée.
Réponse
Trop de publicités?J'ai mis en place une démo en utilisant NetBeans Platform (7.0.1) avec gov.nasa.worldwind.awt.WorldWindowGLCanvas
y gov.nasa.worldwindx.examples.LayerPanel
Code d'initialisation :
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;
Cela fonctionne de la même manière qu'en exécutant l'exemple de manière autonome, je dirais donc que le problème ne vient pas de la plate-forme NetBeans. Sans code, il est difficile de dire ce qui ne va pas.
Il convient de noter que le gov.nasa.worldwind.awt.WorldWindowGLCanvas
n'est pas un composant Swing mais un composant lourd. Cela n'a rien à voir avec votre question, mais je n'ai pas pu m'empêcher de le souligner. Le composant Swing est gov.nasa.worldwind.awt.WorldWindowGLJPanel
Edit : Je me rends compte que ma réponse n'est pas très utile, donc pour y remédier j'ajouterai une suggestion. Vous pourriez essayer d'invalider le TopComponent et d'appeler repaint chaque fois que vous en avez besoin pour rendre la nouvelle couche.