У меня есть следующий код, частично взятый из реализации Red Black Tree Java. Это часть графического интерфейса. Я очень плохо разбираюсь в Java Graphics, и я надеялся получить помощь по этому вопросу.
public void paintComponent(final Graphics g) {
super.paintComponent(g);
if (tree == null) {
return;
}
tree.traverseInorder(new Inter.Visitor() {
private int x = gridwidth;
public void visit(LBTN node) {
coordinates.put(node, new Point(x, gridheight * (depth(node)+1)));
x += gridwidth;
}
});
tree.traversePostorder(new Inter.Visitor() {
public void visit(LBTN node) {
String data = node.getinfo().toString();
Point center = (Point)coordinates.get(node);
if (node.getParent() != null) {
Point parentPoint = (Point)coordinates.get(node.getParent());
g.setColor(Color.black);
g.drawLine(center.x, center.y, parentPoint.x, parentPoint.y);
}
FontMetrics fm = g.getFontMetrics();
Rectangle r = fm.getStringBounds(data, g).getBounds();
r.setLocation(center.x - r.width/2, center.y - r.height/2);
Color color = getNodeColor(node);
Color textColor =
(color.getRed() + color.getBlue() + color.getGreen() < 382)
? Color.white
: Color.black;
g.setColor(color);
g.fillRect(r.x - 2 , r.y - 2, r.width + 4, r.height + 4);
g.setColor(textColor);
g.drawString(data, r.x, r.y + r.height);
}
});
}
Как вы можете видеть, из нижней части кода рисуется прямоугольник для узлов красного черного дерева. Я хочу изменить это на эллипсы, в то же время делая программу работоспособной, то есть, используя значения, назначенные прямоугольнику. Я хочу иметь возможность создавать эллипсы на основе одинаковых значений
Любая помощь будет высоко ценится. Привет