1

标题说明了一切,我想知道如何在 JGraphX 图形上使用 Graphics2D 进行绘制?我试过这样的事情:

mxGraphComponent graphComponent = ...;
// ...
Graphics2D g = (Graphics2D)graphComponent.getGraphics();
g.setColor(Color.BLACK);
g.drawLine(0, 0, 500, 500);
graph.refresh();
graphComponent.refresh();
graphComponent.repaint();

但没有任何运气。请给我一些建议好吗?

4

1 回答 1

1

首先,graph.refresh();将擦除绘制的线,因为它将重新渲染组件图形上的所有图形。

其次,别忘了在ADT Thread中调用draw函数

final Graphics2D g = (Graphics2D)graphComponent.getGraphics();
Runnable r = new Runnable() {
   public void run() {
      g.setColor(Color.BLACK);
      g.drawLine(0, 0, 500, 500);
   }
};

if (!SwingUtilities.isEventDispatchThread()) {
    SwingUtilities.invokeLater(r);
} else {
    r.run();
}

除此之外,它应该可以正常工作,因为我已经在组件上成功绘制了矩形。

但是请注意,如果图形已缩放或滚动窗格不在原点,则必须使用 转换点:

    Point p = SwingUtilisties.convertPoint(graphComponent, x,y, 
              graphComponent.getGraphControl());
于 2013-10-24T15:46:11.350 回答