2013-10-24 3 views
1

Название говорит все, интересно, как я могу рисовать с Graphics2D на графике JGraphX? Я попробовал что-то вроде этого:Как рисовать с помощью Graphics2D на графике JGraphX?

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

но без везения. Не могли бы вы дать мне несколько советов, пожалуйста?

ответ

1

Во-первых, graph.refresh(); будет стирать строку dranw, так как она будет повторно отображать весь график на графике компонента.

Во-вторых, не забудьте вызвать функцию отрисовки в ADT тему

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()); 
Смежные вопросы