Je souhaite dessiner un curseur mobile (en vert) dans ma vue en plan 2D (en rouge). J'utilise un joystick pour le commander.Déplacer le dessin sur Jcomponent
Pour accéder au panneau rouge que je dois obtenir des composants des composants du contrôleur suivant ce schéma: JPanel => JScrollPane => JViewPort => PlanComponent (étend JComponent)
Mes coordonnées du curseur sont continuellement mis à jour par lire une socket. Lorsque les coordonnées sont modifiées, il appelle la fonction drawCross.
Mon curseur est parfaitement déplacé par le joystick mais la zone rouge clignote et le curseur clignote davantage.
public ThreadGestionObjetImu(Home home, HomeController homeController) {
_sweetHome3dHomeControllerVar = homeController;
_jComponentLayer1 = (MultipleLevelsPlanPanel) _sweetHome3dHomeControllerVar.getPlanController().getView();
_jComponentLayer2 = (JPanel) _jComponentLayer1.getComponent(1);
_jComponentLayer3 = (JScrollPane) _jComponentLayer2.getComponent(0);
_jComponentLayer4 = (JViewport) _jComponentLayer3.getComponent(0);
_planComponent = (PlanComponent) _jComponentLayer4.getComponent(0);
}
public void update(Observable o, Object arg) {
//parsing socket signal
switch(XImuPlugin.state){
case PLAN:
drawCross();
break;
}
}
public void drawCross() {
_planComponent.getGraphics().drawLine(_crossPositionX + _intImuValueX, _crossPositionY + 25 + _intImuValueY, _crossPositionX + 50 + _intImuValueX, _crossPositionY + 25 + _intImuValueY);
_planComponent.getGraphics().drawLine(_crossPositionX + 25 + _intImuValueX, _crossPositionY + _intImuValueY, _crossPositionX + 25 + _intImuValueX, _crossPositionY + 50 + _intImuValueY);
if (_intImuValueX > 1 || _intImuValueX < -1 || _intImuValueY > 1 || _intImuValueY < -1) {
_planComponent.update(_planComponent.getGraphics());
// I tried update, repaint, updateUI and all the possible functions
}
}
EDIT: J'ai oublié de préciser que je coincé dans seulement en utilisant la sweethome3d Api parce que je suis la création d'un plug-in, je ne peux pas modifier le code original.
Problème résolu en utilisant _planComponent.add (MyComponent); J'ai créé un composant JComponent avec un remplacement de paintComponent.
S'il vous plaît simplifier votre problème et votre code en créant et en affichant un approprié [mcve]. –
'_planComponent.getGraphics()' qui semble suspect .. En savoir plus lorsque le MCVE suggéré par @HovercraftFullOfEels est posté. –
Essayé d'être plus clair, n'hésitez pas à demander des détails. – Mfaure