Jung에서 EditingModalGraphMouse를 사용할 때 정점 좌표를 가져 오는 방법이 있습니까 ?? 좌표 setter 및 getter로 정점 클래스를 만들었지 만 특정 좌표로 정점을 설정하는 방법을 알려지지 않았습니까? 다음과 같이 다음은 당신에게 데카르트는 정 VisualizationViewer 인스턴스에서 좌표를 구하는 방법에 대한 아이디어를 제공정에서 정점 좌표를 얻는 방법은 무엇입니까?
0
A
답변
0
...
는 내부 클래스를 만듭니다
: (변압기 난 사용자에게 변압기를했습니다)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();
}
}
은 GraphMouse 인스턴스에 플러그인을 추가
graphMouse = new DefaultModalGraphMouse<Object, Object>();
vv.setGraphMouse(graphMouse);
vv.addKeyListener(graphMouse.getModeKeyListener());
graphMouse.add(new MyGraphMousePlugin());
편집 :를
당신의 계정으로 정 그래프 레이아웃에 만든 번역 걸릴 직교 좌표 줄 것이다다음으로 수정 : 그것은 스케일 인자를 생략하기 때문에
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();
}
}
그것은 아직 완벽하지 않습니다,하지만 당신은 아이디어를 얻을 것이다 ...
모델의 좌표를 얻기 위해 화면 좌표계에서보기 좌표계까지를 모델 좌표계로 계산해야합니다.
위 코드의 일반적인 유형
자신의 버전 :편집 변경해야
하하, 단서는 이미이며 올바른 방법 ... 필요가 없습니다 것입니다 계산하다! 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);
}
}
);
}
덕분에 많이 :) 은 또한 완벽하게 작동하는 editingGraphMousePlugin 그것을 시도 :) 사실 내가 궁금 해서요 (나는 이미 설정했습니다 editingmodalgraphMouse 아 파크 정점을 추가 할 때 좌표를 얻을 수 있습니다 setter 및 getter) – Jihath
x 및 y를 포함하는 그래프 파일을 얻으려고합니다 지금은 이름과 색을 얻을 수 있지만 x 정보를 설정기에 제공하는 방법을 찾지 못했습니다 – Jihath
@eee 구현시 도구 설명에 좌표가 표시되지만 꼭지점 위치가 다른 코드로 화면에 표시 될 때이를 반환 할 수있는 방법이 있습니까? – CajunLuke