我有以下代码,部分来自Red Black Tree Java实现。这是gui的一部分。我对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);
}
});
}
如您所见,从底部代码部分开始,为红黑树节点绘制一个矩形。我想将其更改为省略号,同时仍然使程序功能正常,即仍然使用分配给矩形的值。我希望能够基于相同的值创建省略号
任何帮助将不胜感激。此致
答案 0 :(得分:0)
我想替换这个,
g.fillRect(r.x - 2 , r.y - 2, r.width + 4, r.height + 4);
有了这个,
g.fillOval(r.x - 2 , r.y - 2, r.width + 4, r.height + 4);
应该有用。