Java GUI。椭圆而不是矩形

时间:2012-03-20 17:24:37

标签: java swing user-interface graphics paintcomponent

我有以下代码,部分来自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);
            }
        });
    }

如您所见,从底部代码部分开始,为红黑树节点绘制一个矩形。我想将其更改为省略号,同时仍然使程序功能正常,即仍然使用分配给矩形的值。我希望能够基于相同的值创建省略号

任何帮助将不胜感激。此致

1 个答案:

答案 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);

应该有用。

http://docs.oracle.com/javase/6/docs/api/java/awt/Graphics.html#fillOval%28int,%20int,%20int,%20int%29