TextHitInfo Demo: tell you which is the letter you are clicking : Text Layout « 2D Graphics GUI « Java

TextHitInfo Demo: tell you which is the letter you are clicking

TextHitInfo Demo: tell you which is the letter you are clicking
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.font.FontRenderContext;
import java.awt.font.TextHitInfo;
import java.awt.font.TextLayout;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class TextHitInfoDemo extends JPanel {
  private TextLayout mTextLayout;

  private int mX = 40, mY = 80;

  public TextHitInfoDemo() {
    addMouseListener(new MouseAdapter() {
      public void mouseClicked(MouseEvent me) {
        TextHitInfo hit = mTextLayout.hitTestChar(me.getX() - mX, me
            - mY);

  public void paint(Graphics g) {
    Graphics2D g2 = (Graphics2D) g;


    String s = "Java Source and Support";
    Font font = new Font("Serif", Font.PLAIN, 32);

    if (mTextLayout == null) {
      FontRenderContext frc = g2.getFontRenderContext();
      mTextLayout = new TextLayout(s, font, frc);

    mTextLayout.draw(g2, mX, mY);
  public static void main(String[] args) {
    JFrame f = new JFrame();
    f.getContentPane().add(new TextHitInfoDemo());
    f.setSize(200, 200);


Related examples in the same category

1.JFreeChart: Draw String DemoJFreeChart: Draw String Demo
2.Unicode: test layoutUnicode: test layout
3.Unicode displayUnicode display
4.Line break for textlayoutLine break for textlayout
5.Mouse hit and textlayoutMouse hit and textlayout
6.TextLayout demoTextLayout demo
7.Draw text along a curveDraw text along a curve
8.TextAttribute: Underline and strike throughTextAttribute: Underline and strike through
9.TextAttribute: color and fontTextAttribute: color and font
10.Hightlight text by drag and selectionHightlight text by drag and selection
11.LineMetrics: the metrics to layout characters along a lineLineMetrics: the metrics to layout characters along a line
12.Paragraph LayoutParagraph Layout
13.Caret actionCaret action
14.Caret and TextLayoutCaret and TextLayout
15.Another Line Break Demo
16.A display of text, formatted by us instead of by AWT/SwingA display of text, formatted by us instead of by AWT/Swing
17.Draw text with TextLayout
18.Drawing a Paragraph of Text
19.Getting the Shape from the Outline of Text
20.Drawing Text with Mixed Styles
21.Drawing multi-line text with AttributedString and LineBreakMeasurer
22.Draws the string at the specified location underlining the specified character
23.Renders a paragraph of text (line breaks ignored) to an image (created and returned).