我的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工作正常。
我的问题是:
关心Marc
答案 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的背景颜色。
要在您希望的位置绘制矩形,并使用特定的背景,您必须按以下步骤继续:
r
grpahics.setPaint()
代表背景和graphics.fill(r)
graphcis.setPaint()
代表边框和graphics.draw(r)
绘制边框现在,根据您为绘制文本设置的字体的FontMetrics
,将文本绘制到矩形中是困难的部分,其涉及高度等的计算。
我用Google搜索并为您找到了一个示例here