工具提示自己的图纸

时间:2012-04-03 16:00:04

标签: java swing user-interface tooltip

我的java应用程序包含一个JPanel,我在其上绘制某些形状。现在我想用某种工具提示来标记这些形状。

因此我尝试使用drawString,setBackground,setColor方法创建自己的“工具提示”。:

public void drawToolTip(Graphics2D graphics, String text, Point2D position) {
    graphics.setBackground(Color.RED);
    graphics.setColor(Color.GREEN);
    graphics.drawString(text, (float) position.getX(), (float) position.getY());
}

不幸的是,setBackground方法似乎不起作用。尽管我将其设置为红色,但文本背景仍保持透明。 setColor和drawString工作正常。

我的问题是:

  • setBackground方法不起作用的原因是什么?
  • 是否有可能在没有drawRect的情况下在文本周围画一个边界?
  • 如果我想使用“drawRect”方法作为替代来绘制文本背景和边框:如何使其自动适合书面文字?或者换句话说,我如何获得特定文本的维度?

关心Marc

3 个答案:

答案 0 :(得分:4)

    默认情况下,
  • Graphics2D.drawString()不会绘制背景。你必须自己做。

  • 您可以使用drawRect()绘制线条边框或fillRec()绘制实心矩形。

  • Oracle在测量字符串宽度方面有很好的tutorial。基本上,您需要创建java.awt.Font然后获取其FontMetrics并使用它来计算字符串的宽度和高度。

答案 1 :(得分:3)

一个简单的实现涉及绘制Graphics图标的JLabel对象。然后只需将工具提示文本添加到Swing组件。

有关详细信息,请参阅How to Use Tool Tips

答案 2 :(得分:3)

您无法使用graphics.setBackground(..)调用以预期的方式更改背景颜色。在Graphics2D中设置背景颜色只会影响clearRect或fillRect类型的调用,而不会影响Component的背景颜色。

要在您希望的位置绘制矩形,并使用特定的背景,您必须按以下步骤继续:

  1. 定义一个矩形 - r
  2. grpahics.setPaint()代表背景和
  3. graphics.fill(r) graphcis.setPaint()代表边框和
  4. graphics.draw(r)绘制边框
  5. 现在,根据您为绘制文本设置的字体的FontMetrics,将文本绘制到矩形中是困难的部分,其涉及高度等的计算。 我用Google搜索并为您找到了一个示例here