工具提示当然值得一看。其他选择包括
drawString(),
translate()或
TextLayout。有许多可用的示例。
附录:@Catalina
Island建议,以下示例同时显示
drawString()和
setToolTipText()。为简单起见,端点是相对于组件大小的,因此您可以看到调整窗口大小的结果。
附录:的使用
setToolTipText()仅说明方法。就像@camickr在这里指出的那样,
getToolTipText(MouseEvent)当鼠标悬停在该行上或选中该行时,您应该覆盖并更新笔尖。
import java.awt.Dimension;import java.awt.EventQueue;import java.awt.Graphics;import java.awt.Point;import javax.swing.JComponent;import javax.swing.Jframe;public class LabeledEdge extends JComponent { private static final int N = 20; private Point n1, n2; public LabeledEdge(int w, int h) { this.setPreferredSize(new Dimension(w, h)); } @Override protected void paintComponent(Graphics g) { super.paintComponent(g); this.n1 = new Point(N, N); this.n2 = new Point(getWidth() - N, getHeight() - N); g.drawLine(n1.x, n1.y, n2.x, n2.y); double d = n1.distance(n2); this.setToolTipText(String.valueOf(d)); g.drawString(String.valueOf((int) d), (n1.x + n2.x) / 2, (n1.y + n2.y) / 2); } private static void display() { Jframe f = new Jframe("EdgeLabel"); f.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE); f.add(new LabeledEdge(320, 240)); f.pack(); f.setLocationRelativeTo(null); f.setVisible(true); } public static void main(String[] args) { EventQueue.invokeLater(new Runnable() { @Override public void run() { display(); } }); }}


