标题说明了一切,我想知道如何在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();
但没有任何运气。你能给我一些提示吗?
答案 0 :(得分:1)
首先,graph.refresh();
将删除dranw行,因为它将重新渲染组件图形上的所有图形。
其次,不要忘记在ADT线程中调用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());