Java 用于自己的图形的工具提示

Java 用于自己的图形的工具提示,java,swing,user-interface,tooltip,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(Colo

我的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());
}
不幸的是,挫折的方法似乎不起作用。文本背景保持透明,尽管我将其设置为红色。setColor和抽绳很好用

我的问题是:

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

关于Marc

一个简单的实现需要在
JLabel
图标的
图形
对象上绘制。然后简单地将工具提示文本添加到Swing组件

有关更多信息,请参阅。

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

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

  • 甲骨文在测量字符串宽度方面有很大的优势。本质上,您需要创建一个
    java.awt.Font
    ,然后获取它的
    FontMetrics
    ,并使用它来计算字符串的宽度和高度


您无法使用
图形更改背景颜色。设置背景(..)
呼叫。在Graphics2D中设置背景色只影响clearRect或fillRect类型的调用,而不影响组件的背景色

要在您希望的位置绘制一个具有特定背景的矩形,您必须遵循以下步骤:

  • 定义一个矩形-
    r
  • grpahics.setPaint()
    用于背景和
  • graphics.fill(r)
    graphcis.setPaint()
    用于边框和
  • 图形。绘制(r)
    以绘制边框
  • 现在,在矩形中绘制文本的困难部分来了,这涉及到根据您为绘制文本而设置的字体的
    FontMetrics
    计算高度等。
    我在谷歌上找到了一个例子

    顺便问一下,你是如何得到Graphics2D对象的?它是从BuffereImage来的吗?您是在组件上调用
    getGraphics()
    还是
    createGraphics()
    ?在JPanel的绘制方法中,我会:Graphics2D Graphics2D=(Graphics2D)graphics;并调用drawToolTip方法。另外,请确保调用
    Graphics2D.setFont()
    ,以便实际绘制的
    字符串使用的字体与获得的
    FontMetrics
    相同。