Y at-il un moyen d'obtenir la coordonnée de vertex en utilisant le EditingModalGraphMouse dans Jung ?? J'ai créé une classe pour le vertex avec le setter de coordonnées et le getter mais je ne sais pas comment définir le vertex avec sa coordonnée spécifique. (je l'ai utilisateur un transformateur: Transformateur)Comment obtenir une coordonnée vertex dans JUNG?
Répondre
Ce qui suit vous donne une idée sur la façon d'obtenir les coordonnées cartésiennes sur une instance Jung VisualizationViewer ...
Créer une classe interne comme suit:
protected class MyGraphMousePlugin extends TranslatingGraphMousePlugin implements MouseListener {
@Override
public void mouseMoved(MouseEvent e) {
final VisualizationViewer<GeoLocationData.Station,GeoLocationData.Link> vv =
(VisualizationViewer<GeoLocationData.Station,GeoLocationData.Link>)e.getSource();
Point2D p = e.getPoint();//vv.getRenderContext().getBasicTransformer().inverseViewTransform(e.getPoint());
GraphElementAccessor<GeoLocationData.Station,GeoLocationData.Link> pickSupport = vv.getPickSupport();
if(pickSupport != null) {
vv.setToolTipText ("<html>x: "+p.getX()+"<br>y: "+p.getY());
}
}
public MyGraphMousePlugin(int modifiers) {
super(modifiers);
// TODO Auto-generated constructor stub
}
public MyGraphMousePlugin() {
super();
}
}
Ajouter le plugin à votre instance GraphMouse:
graphMouse = new DefaultModalGraphMouse<Object, Object>();
vv.setGraphMouse(graphMouse);
vv.addKeyListener(graphMouse.getModeKeyListener());
graphMouse.add(new MyGraphMousePlugin());
Modifié:
modification suivante vous donnera les coordonnées cartésiennes qui prennent en compte la traduction faite sur une mise en page graphique Jung:
protected class MyGraphMousePlugin extends TranslatingGraphMousePlugin implements MouseListener {
@Override
public void mouseMoved(final MouseEvent e) {
SwingUtilities.invokeLater(
new Runnable() {
public void run() {
final VisualizationViewer<GeoLocationData.Station,GeoLocationData.Link> vv =
(VisualizationViewer<GeoLocationData.Station,GeoLocationData.Link>)e.getSource();
Point2D p = e.getPoint();//vv.getRenderContext().getBasicTransformer().inverseViewTransform(e.getPoint());
GraphElementAccessor<GeoLocationData.Station,GeoLocationData.Link> pickSupport = vv.getPickSupport();
if(pickSupport != null) {
AffineTransform lat =
vv.getRenderContext().getMultiLayerTransformer().getTransformer(Layer.LAYOUT).getTransform();
//AffineTransform vat =
// vv.getRenderContext().getMultiLayerTransformer().getTransformer(Layer.VIEW).getTransform();
//AffineTransform at = new AffineTransform();
double x = p.getX() - lat.getTranslateX(); //;
double y = p.getY() - lat.getTranslateY(); //;
vv.setToolTipText ("<html>x: "+x+"<br>y: "+y);
}
}
}
);
}
public MyGraphMousePlugin(int modifiers) {
super(modifiers);
// TODO Auto-generated constructor stub
}
public MyGraphMousePlugin() {
super();
}
}
Il est pas encore parfait, car il omet le facteur d'échelle, mais vous aurez l'idée ...
Vous devez calculer, à partir du système de coordonnées de l'écran, le système de coordonnées de vue jusqu'au système de coordonnées du modèle pour obtenir les coordonnées du modèle.
Les types génériques dans les codes ci-dessus doivent être modifiés à votre propre version :)
Edité
Haha, l'indice est déjà là et il est la bonne façon ... pas besoin de calculer! http://sourceforge.net/projects/jung/forums/forum/252062/topic/3040266?message=6522779
@Override
public void mouseMoved(final MouseEvent e) {
SwingUtilities.invokeLater(
new Runnable() {
public void run() {
final VisualizationViewer<GeoLocationData.Station,GeoLocationData.Link> vv =
(VisualizationViewer<GeoLocationData.Station,GeoLocationData.Link>)e.getSource();
Point2D p = vv.getRenderContext().getMultiLayerTransformer().inverseTransform(e.getPoint());
double x = p.getX();
double y = p.getY();
vv.setToolTipText ("<html>x: "+(int)x+"<br>y: "+(int)y);
}
}
);
}
- 1. étiquette Vertex dans la visualisation graphique JUNG
- 2. obtenir la coordonnée vertex après la transformation OpenGL ES 1.0
- 3. Comment utiliser GraphMLReader2 dans Jung?
- 4. JUNG obtenir l'étiquette de bordure
- 5. Étiquettes de vertex qui se chevauchent dans JUNG
- 6. Comment obtenir une longueur d'arête JUNG?
- 7. Obtenir une coordonnée sur une imageview
- 8. comment obtenir vertex après transformation
- 9. Comment calculer la coordonnée de vertex de l'espace de vue à partir de la coordonnée de vertex de l'espace-écran donnée FOV et la résolution d'écran?
- 10. comment utiliser différentes formes pour transformer une forme jung
- 11. Comment transformer une coordonnée d'écran 2D en une coordonnée de carte 2D dans openGL?
- 12. Comment obtenir la coordonnée inférieure y
- 13. INPUT type = image, comment obtenir une valeur de coordonnée?
- 14. Comment obtenir la déclaration Vertex en DX9
- 15. comment insérer un graphe JUNG dans VisualizationViewer
- 16. Comment obtenir un vertex par nom?
- 17. Comment générer une coordonnée normale?
- 18. Comment compiler Jung Source?
- 19. Port JUNG dans GWT
- 20. JUNG: Custom DijkstraShortestPath
- 21. Comment obtenir le vertex d'un nom vertex dans R et Igraph?
- 22. comment obtenir la coordonnée de pinchgesture dans l'iphone
- 23. Comment transformer une coordonnée de WGS84 en coordonnée dans une projection avec PROJ.4?
- 24. Comment obtenir la coordonnée d'un ClickableSpan dans un TextView?
- 25. Comment unir deux graphiques dans JUNG?
- 26. Performance de l'algorithme du plus court chemin dans l'API JUNG
- 27. Obtenir si une coordonnée est à l'intérieur d'une polyligne
- 28. Obtenir la coordonnée d'événement tactile sur une imageview
- 29. comment déplacer une toile Raphael wholely (qui contient des objets) d'une coordonnée à l'autre coordonnée à une autre coordonnée continue
- 30. Comment utiliser correctement les transformations de mise en page JUNG?
Merci beaucoup :) Je l'ai essayé avec le editingGraphMousePlugin aussi fonctionne parfaitement :) En fait, je me demandais est possible d'obtenir les coordonnées lors de l'ajout du sommet de cinque le editingmodalgraphMouse (i ai déjà mis la setter et getter dans la vertex factory) – Jihath
Je vise à avoir un fichier graphml contenant les x et y dès maintenant je pourrais obtenir le nom et sa couleur mais je n'ai pas trouvé le moyen de donner les informations x au setter – Jihath
@eee Vos implémentations montrent les coordinares dans une info-bulle, mais existe-t-il un moyen de renvoyer les emplacements d'un sommet tels qu'ils apparaissent sur l'écran à un autre code? – CajunLuke