<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2F2D_Graphics_GUI%2FText</id>
		<title>Java/2D Graphics GUI/Text - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2F2D_Graphics_GUI%2FText"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/2D_Graphics_GUI/Text&amp;action=history"/>
		<updated>2026-04-21T09:57:54Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/2D_Graphics_GUI/Text&amp;diff=8149&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/2D_Graphics_GUI/Text&amp;diff=8149&amp;oldid=prev"/>
				<updated>2010-06-01T06:55:16Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 06:55, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/2D_Graphics_GUI/Text&amp;diff=8148&amp;oldid=prev</id>
		<title> в 18:01, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/2D_Graphics_GUI/Text&amp;diff=8148&amp;oldid=prev"/>
				<updated>2010-05-31T18:01:46Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Create a shadowed text ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;   &lt;br /&gt;
import java.awt.Color;&lt;br /&gt;
import java.awt.Font;&lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import java.awt.Graphics2D;&lt;br /&gt;
import java.awt.font.TextLayout;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JLabel;&lt;br /&gt;
public class ShadowText extends JLabel {&lt;br /&gt;
  public void paint(Graphics g) {&lt;br /&gt;
    String text = &amp;quot;Hello World&amp;quot;;&lt;br /&gt;
    int x = 10;&lt;br /&gt;
    int y = 100;&lt;br /&gt;
    Font font = new Font(&amp;quot;Georgia&amp;quot;, Font.ITALIC, 50);&lt;br /&gt;
    Graphics2D g1 = (Graphics2D) g;&lt;br /&gt;
    TextLayout textLayout = new TextLayout(text, font, g1.getFontRenderContext());&lt;br /&gt;
    g1.setPaint(new Color(150, 150, 150));&lt;br /&gt;
    textLayout.draw(g1, x + 3, y + 3);&lt;br /&gt;
    g1.setPaint(Color.BLACK);&lt;br /&gt;
    textLayout.draw(g1, x, y);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) throws IOException {&lt;br /&gt;
    JFrame f = new JFrame();&lt;br /&gt;
    f.add(new ShadowText());&lt;br /&gt;
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    f.setSize(450, 150);&lt;br /&gt;
    f.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Display some lyrics on the panel. ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;   &lt;br /&gt;
import java.awt.Font;&lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import java.awt.Graphics2D;&lt;br /&gt;
import java.awt.RenderingHints;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
public class PrintLineByLine extends JPanel {&lt;br /&gt;
  public void paintComponent(Graphics g) {&lt;br /&gt;
    super.paintComponent(g);&lt;br /&gt;
    Graphics2D g2d = (Graphics2D) g;&lt;br /&gt;
    RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING,&lt;br /&gt;
        RenderingHints.VALUE_ANTIALIAS_ON);&lt;br /&gt;
    rh.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);&lt;br /&gt;
    g2d.setRenderingHints(rh);&lt;br /&gt;
    g2d.setFont(new Font(&amp;quot;Purisa&amp;quot;, Font.PLAIN, 13));&lt;br /&gt;
    g2d.drawString(&amp;quot;Line 1&amp;quot;, 20, 30);&lt;br /&gt;
    g2d.drawString(&amp;quot;Line 2&amp;quot;, 20, 60);&lt;br /&gt;
    g2d.drawString(&amp;quot;Line 3&amp;quot;, 20, 90);&lt;br /&gt;
    g2d.drawString(&amp;quot;Line 4&amp;quot;, 20, 120);&lt;br /&gt;
    g2d.drawString(&amp;quot;Line 5&amp;quot;, 20, 150);&lt;br /&gt;
    g2d.drawString(&amp;quot;Line 6&amp;quot;, 20, 180);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JFrame frame = new JFrame();&lt;br /&gt;
    frame.add(new PrintLineByLine());&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    frame.setSize(420, 250);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Display underlined text ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;   &lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
public class Main extends JPanel{&lt;br /&gt;
  String s = &amp;quot;Underlined text&amp;quot;;&lt;br /&gt;
  int x = 10;&lt;br /&gt;
  int y = 10;&lt;br /&gt;
  public void init() {&lt;br /&gt;
  }&lt;br /&gt;
  public void paint(Graphics g) {&lt;br /&gt;
    g.drawString(s, x, y);&lt;br /&gt;
    g.drawLine(x, y + 2, x + getFontMetrics(getFont()).stringWidth(s), y + 2);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Display unicode text ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;   &lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import java.awt.Graphics2D;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
public class RussiaUnicode extends JPanel {&lt;br /&gt;
  public void paint(Graphics g) {&lt;br /&gt;
    super.paintComponent(g);&lt;br /&gt;
    Graphics2D g2d = (Graphics2D) g;&lt;br /&gt;
    g2d.drawString(&amp;quot;\u0424\u0451\u0434\u043e\u0440.&amp;quot;, 20, 30);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JFrame frame = new JFrame(&amp;quot;Unicode&amp;quot;);&lt;br /&gt;
    frame.add(new RussiaUnicode());&lt;br /&gt;
    frame.setSize(520, 220);&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Display vertical text ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;   &lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
public class Main extends JPanel{&lt;br /&gt;
  String s = &amp;quot;Vertical text&amp;quot;;&lt;br /&gt;
  int v;&lt;br /&gt;
  public void paint(Graphics g) {&lt;br /&gt;
    v = g.getFontMetrics(getFont()).getHeight() + 1;&lt;br /&gt;
    int j = 0;&lt;br /&gt;
    int k = s.length();&lt;br /&gt;
    while (j &amp;lt; k + 1) {&lt;br /&gt;
      if (j == k)&lt;br /&gt;
        g.drawString(s.substring(j), 10, 10 + (j * v));&lt;br /&gt;
      else&lt;br /&gt;
        g.drawString(s.substring(j, j + 1), 10, 10 + (j * v));&lt;br /&gt;
      j++;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] a){&lt;br /&gt;
    JFrame f = new JFrame();&lt;br /&gt;
    f.add(new Main());&lt;br /&gt;
    f.setSize(300,300);&lt;br /&gt;
    f.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Draw 2D Text ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;   &lt;br /&gt;
import java.awt.Color;&lt;br /&gt;
import java.awt.Dimension;&lt;br /&gt;
import java.awt.Font;&lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import java.awt.Graphics2D;&lt;br /&gt;
import java.awt.font.FontRenderContext;&lt;br /&gt;
import java.awt.font.TextLayout;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
public class Main extends JPanel {&lt;br /&gt;
  public Main() {&lt;br /&gt;
    setBackground(Color.white);&lt;br /&gt;
  }&lt;br /&gt;
  public void paint(Graphics g) {&lt;br /&gt;
    Graphics2D g2D;&lt;br /&gt;
    g2D = (Graphics2D) g;&lt;br /&gt;
    FontRenderContext frc = g2D.getFontRenderContext();&lt;br /&gt;
    Font font1 = new Font(&amp;quot;Courier&amp;quot;, Font.BOLD, 24);&lt;br /&gt;
    String str1 = new String(&amp;quot;Java&amp;quot;);&lt;br /&gt;
    TextLayout tl = new TextLayout(str1, font1, frc);&lt;br /&gt;
    g2D.setColor(Color.gray);&lt;br /&gt;
    tl.draw(g2D, 70, 150);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String s[]) {&lt;br /&gt;
    JFrame frame1 = new JFrame(&amp;quot;2D Text&amp;quot;);&lt;br /&gt;
    frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    frame1.getContentPane().add(&amp;quot;Center&amp;quot;, new Main());&lt;br /&gt;
    frame1.pack();&lt;br /&gt;
    frame1.setSize(new Dimension(500, 300));&lt;br /&gt;
    frame1.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Drawing Rotated Text ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;   &lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import java.awt.Graphics2D;&lt;br /&gt;
import java.awt.geom.AffineTransform;&lt;br /&gt;
import javax.swing.JComponent;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
public class BasicDraw {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JFrame frame = new JFrame();&lt;br /&gt;
    frame.add(new MyComponent());&lt;br /&gt;
    frame.setSize(300, 300);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class MyComponent extends JComponent {&lt;br /&gt;
  public void paint(Graphics g) {&lt;br /&gt;
    Graphics2D g2d = (Graphics2D)g;&lt;br /&gt;
    &lt;br /&gt;
    g2d.drawString(&amp;quot;aString&amp;quot;, 100, 100);&lt;br /&gt;
    AffineTransform at = new AffineTransform();&lt;br /&gt;
    at.setToRotation(Math.PI / 4.0);&lt;br /&gt;
    g2d.setTransform(at);&lt;br /&gt;
    g2d.drawString(&amp;quot;aString&amp;quot;, 100, 100);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Drawing Simple Text ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;   &lt;br /&gt;
import java.awt.Font;&lt;br /&gt;
import java.awt.FontMetrics;&lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import javax.swing.JComponent;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
public class BasicDraw {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JFrame frame = new JFrame();&lt;br /&gt;
    frame.add(new MyComponent());&lt;br /&gt;
    frame.setSize(300, 300);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class MyComponent extends JComponent {&lt;br /&gt;
  public void paint(Graphics g) {&lt;br /&gt;
    Font font = new Font(&amp;quot;Serif&amp;quot;, Font.PLAIN, 12);&lt;br /&gt;
    g.setFont(font);&lt;br /&gt;
    g.drawString(&amp;quot;a String&amp;quot;, 10, 10);&lt;br /&gt;
    FontMetrics fontMetrics = g.getFontMetrics();&lt;br /&gt;
    g.drawString(&amp;quot;aString&amp;quot;, 10, 10 + fontMetrics.getAscent());&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Draw string rotated clockwise 45 degrees ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;   &lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import java.awt.Graphics2D;&lt;br /&gt;
import java.awt.geom.AffineTransform;&lt;br /&gt;
import javax.swing.JComponent;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
public class BasicDraw {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JFrame frame = new JFrame();&lt;br /&gt;
    frame.add(new MyComponent());&lt;br /&gt;
    frame.setSize(300, 300);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class MyComponent extends JComponent {&lt;br /&gt;
  public void paint(Graphics g) {&lt;br /&gt;
    Graphics2D g2d = (Graphics2D)g;&lt;br /&gt;
    &lt;br /&gt;
    g2d.drawString(&amp;quot;aString&amp;quot;, 100, 100);&lt;br /&gt;
    AffineTransform at = new AffineTransform();&lt;br /&gt;
    at.setToRotation(Math.PI / 4.0);&lt;br /&gt;
    g2d.setTransform(at);&lt;br /&gt;
    g2d.drawString(&amp;quot;aString&amp;quot;, 100, 100);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
 &lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Draw string rotated counter-clockwise 45 degrees ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;   &lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import java.awt.Graphics2D;&lt;br /&gt;
import java.awt.geom.AffineTransform;&lt;br /&gt;
import javax.swing.JComponent;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
public class BasicDraw {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JFrame frame = new JFrame();&lt;br /&gt;
    frame.add(new MyComponent());&lt;br /&gt;
    frame.setSize(300, 300);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class MyComponent extends JComponent {&lt;br /&gt;
  public void paint(Graphics g) {&lt;br /&gt;
    Graphics2D g2d = (Graphics2D)g;&lt;br /&gt;
    &lt;br /&gt;
    AffineTransform at = new AffineTransform();&lt;br /&gt;
    at.setToRotation(Math.PI/4.0);&lt;br /&gt;
    g2d.setTransform(at);&lt;br /&gt;
    g2d.drawString(&amp;quot;aString&amp;quot;, 200, 100);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== drawString(): specify the position of the text on the window area ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;   &lt;br /&gt;
import java.awt.Font;&lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import java.awt.Graphics2D;&lt;br /&gt;
import java.awt.RenderingHints;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
public class Text extends JPanel {&lt;br /&gt;
  public void paintComponent(Graphics g) {&lt;br /&gt;
    super.paintComponent(g);&lt;br /&gt;
    Graphics2D g2d = (Graphics2D) g;&lt;br /&gt;
    RenderingHints rh = new RenderingHints(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);&lt;br /&gt;
    rh.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);&lt;br /&gt;
    g2d.setRenderingHints(rh);&lt;br /&gt;
    Font font = new Font(&amp;quot;New Roma&amp;quot;, Font.BOLD, 40);&lt;br /&gt;
    g2d.setFont(font);&lt;br /&gt;
    g2d.drawString(&amp;quot;text&amp;quot;, 20, 30);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    Text text = new Text();&lt;br /&gt;
    JFrame frame = new JFrame(&amp;quot;Sonnet 55&amp;quot;);&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    frame.add(text);&lt;br /&gt;
    frame.setSize(500, 470);&lt;br /&gt;
    frame.setLocationRelativeTo(null);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Generate Shape From Text ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt; &lt;br /&gt;
import java.awt.Font;&lt;br /&gt;
import java.awt.Graphics2D;&lt;br /&gt;
import java.awt.Polygon;&lt;br /&gt;
import java.awt.Shape;&lt;br /&gt;
import java.awt.font.GlyphVector;&lt;br /&gt;
import java.awt.geom.AffineTransform;&lt;br /&gt;
import java.awt.geom.Ellipse2D;&lt;br /&gt;
import java.awt.geom.GeneralPath;&lt;br /&gt;
import java.awt.geom.Point2D;&lt;br /&gt;
import java.awt.geom.Rectangle2D;&lt;br /&gt;
import java.awt.image.BufferedImage;&lt;br /&gt;
/*&lt;br /&gt;
 * $Id: ShapeUtils.java,v 1.4 2008/10/14 22:31:46 rah003 Exp $&lt;br /&gt;
 *&lt;br /&gt;
 * Copyright 2006 Sun Microsystems, Inc., 4150 Network Circle,&lt;br /&gt;
 * Santa Clara, California 95054, U.S.A. All rights reserved.&lt;br /&gt;
 *&lt;br /&gt;
 * This library is free software; you can redistribute it and/or&lt;br /&gt;
 * modify it under the terms of the GNU Lesser General Public&lt;br /&gt;
 * License as published by the Free Software Foundation; either&lt;br /&gt;
 * version 2.1 of the License, or (at your option) any later version.&lt;br /&gt;
 * &lt;br /&gt;
 * This library is distributed in the hope that it will be useful,&lt;br /&gt;
 * but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt;
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU&lt;br /&gt;
 * Lesser General Public License for more details.&lt;br /&gt;
 * &lt;br /&gt;
 * You should have received a copy of the GNU Lesser General Public&lt;br /&gt;
 * License along with this library; if not, write to the Free Software&lt;br /&gt;
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA&lt;br /&gt;
 */&lt;br /&gt;
public class Utils {&lt;br /&gt;
  public static Shape generateShapeFromText(Font font, char ch) {&lt;br /&gt;
    return generateShapeFromText(font, String.valueOf(ch));&lt;br /&gt;
  }&lt;br /&gt;
  public static Shape generateShapeFromText(Font font, String string) {&lt;br /&gt;
    BufferedImage img = new BufferedImage(100, 100, BufferedImage.TYPE_INT_ARGB);&lt;br /&gt;
    Graphics2D g2 = img.createGraphics();&lt;br /&gt;
    try {&lt;br /&gt;
      GlyphVector vect = font.createGlyphVector(g2.getFontRenderContext(), string);&lt;br /&gt;
      Shape shape = vect.getOutline(0f, (float) -vect.getVisualBounds().getY());&lt;br /&gt;
      return shape;&lt;br /&gt;
    } finally {&lt;br /&gt;
      g2.dispose();&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;/source&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Getting the Dimensions of Text ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;   &lt;br /&gt;
import java.awt.FontMetrics;&lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import java.awt.Graphics2D;&lt;br /&gt;
import javax.swing.JComponent;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
public class BasicDraw {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JFrame frame = new JFrame();&lt;br /&gt;
    frame.add(new MyComponent());&lt;br /&gt;
    frame.setSize(300, 300);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class MyComponent extends JComponent {&lt;br /&gt;
  public void paint(Graphics g) {&lt;br /&gt;
    Graphics2D g2d = (Graphics2D) g;&lt;br /&gt;
    FontMetrics fontMetrics = g2d.getFontMetrics();&lt;br /&gt;
    int width = fontMetrics.stringWidth(&amp;quot;aString&amp;quot;);&lt;br /&gt;
    int height = fontMetrics.getHeight();&lt;br /&gt;
    System.out.println(width);&lt;br /&gt;
    System.out.println(height);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Have a Label with underlined text ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;   &lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import java.awt.Rectangle;&lt;br /&gt;
import javax.swing.JLabel;&lt;br /&gt;
class UnderlinedLabel extends JLabel {&lt;br /&gt;
  public UnderlinedLabel() {&lt;br /&gt;
    this(&amp;quot;&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public UnderlinedLabel(String text) {&lt;br /&gt;
    super(text);&lt;br /&gt;
  }&lt;br /&gt;
  public void paint(Graphics g) {&lt;br /&gt;
    Rectangle r;&lt;br /&gt;
    super.paint(g);&lt;br /&gt;
    r = g.getClipBounds();&lt;br /&gt;
    g.drawLine(0, r.height - getFontMetrics(getFont()).getDescent(), getFontMetrics(getFont())&lt;br /&gt;
        .stringWidth(getText()), r.height - getFontMetrics(getFont()).getDescent());&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rotate a line of character (String) ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;   &lt;br /&gt;
import java.awt.Font;&lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import java.awt.Graphics2D;&lt;br /&gt;
import java.awt.RenderingHints;&lt;br /&gt;
import java.awt.Shape;&lt;br /&gt;
import java.awt.font.FontRenderContext;&lt;br /&gt;
import java.awt.font.GlyphVector;&lt;br /&gt;
import java.awt.geom.AffineTransform;&lt;br /&gt;
import java.awt.geom.Point2D;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
public class RotatedText extends JPanel {&lt;br /&gt;
  public void paint(Graphics g) {&lt;br /&gt;
    Graphics2D g2d = (Graphics2D) g;&lt;br /&gt;
    g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);&lt;br /&gt;
    String s = &amp;quot;111111111111111111111111111111&amp;quot;;&lt;br /&gt;
    Font font = new Font(&amp;quot;Courier&amp;quot;, Font.PLAIN, 12);&lt;br /&gt;
    g2d.translate(20, 20);&lt;br /&gt;
    FontRenderContext frc = g2d.getFontRenderContext();&lt;br /&gt;
    GlyphVector gv = font.createGlyphVector(frc, s);&lt;br /&gt;
    int length = gv.getNumGlyphs();&lt;br /&gt;
    for (int i = 0; i &amp;lt; length; i++) {&lt;br /&gt;
      Point2D p = gv.getGlyphPosition(i);&lt;br /&gt;
      AffineTransform at = AffineTransform.getTranslateInstance(p.getX(), p.getY());&lt;br /&gt;
      at.rotate((double) i / (double) (length - 1) * Math.PI / 3);&lt;br /&gt;
      Shape glyph = gv.getGlyphOutline(i);&lt;br /&gt;
      Shape transformedGlyph = at.createTransformedShape(glyph);&lt;br /&gt;
      g2d.fill(transformedGlyph);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JFrame frame = new JFrame(&amp;quot;Rotated text&amp;quot;);&lt;br /&gt;
    frame.add(new RotatedText());&lt;br /&gt;
    frame.setSize(400, 300);&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    frame.setLocationRelativeTo(null);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Use AffineTransform to draw vertical text ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
&amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;   &lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import java.awt.Graphics2D;&lt;br /&gt;
import java.awt.geom.AffineTransform;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
public class Main extends JPanel {&lt;br /&gt;
  public void paint(Graphics g) {&lt;br /&gt;
    Graphics2D g2d = (Graphics2D) g;&lt;br /&gt;
    AffineTransform at = new AffineTransform();&lt;br /&gt;
    at.setToRotation(-Math.PI / 2.0, getWidth() / 2.0, getHeight() / 2.0);&lt;br /&gt;
    g2d.setTransform(at);&lt;br /&gt;
    g2d.drawString(&amp;quot;Vertical text&amp;quot;, 10, 10);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] a) {&lt;br /&gt;
    JFrame f = new JFrame();&lt;br /&gt;
    f.add(new Main());&lt;br /&gt;
    f.setSize(300, 300);&lt;br /&gt;
    f.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
   &lt;br /&gt;
    &lt;br /&gt;
    &lt;br /&gt;
  &amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>