<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2F2D_Graphics%2FDraw_Text</id>
		<title>Java Tutorial/2D Graphics/Draw Text - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java_Tutorial%2F2D_Graphics%2FDraw_Text"/>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/2D_Graphics/Draw_Text&amp;action=history"/>
		<updated>2026-04-07T00:32:56Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://jexp.ru/index.php?title=Java_Tutorial/2D_Graphics/Draw_Text&amp;diff=3540&amp;oldid=prev</id>
		<title> в 17:44, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/2D_Graphics/Draw_Text&amp;diff=3540&amp;oldid=prev"/>
				<updated>2010-05-31T17:44:26Z</updated>
		
		<summary type="html">&lt;p&gt;&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;Версия 17:44, 31 мая 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>
			</entry>

	<entry>
		<id>http://jexp.ru/index.php?title=Java_Tutorial/2D_Graphics/Draw_Text&amp;diff=3541&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://jexp.ru/index.php?title=Java_Tutorial/2D_Graphics/Draw_Text&amp;diff=3541&amp;oldid=prev"/>
				<updated>2010-05-31T15:25:37Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==  Center text based on font metrics ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
// This example is from the book _Java AWT Reference_ by John Zukowski.&lt;br /&gt;
// Written by John Zukowski.  Copyright (c) 1997 O&amp;quot;Reilly &amp;amp; Associates.&lt;br /&gt;
// You may study, use, modify, and distribute this example for any purpose.&lt;br /&gt;
// This example is provided WITHOUT WARRANTY either expressed or&lt;br /&gt;
import java.awt.Dimension;&lt;br /&gt;
import java.awt.FontMetrics;&lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import java.awt.Insets;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
public class Center extends JPanel {&lt;br /&gt;
    static String text[] = new String[]{&amp;quot;asdf&amp;quot;,&amp;quot;asdfasdf&amp;quot;};&lt;br /&gt;
    private Dimension dim;&lt;br /&gt;
    public void addNotify() {&lt;br /&gt;
        super.addNotify();&lt;br /&gt;
        int maxWidth = 0;&lt;br /&gt;
        FontMetrics fm = getFontMetrics(getFont());&lt;br /&gt;
        for (int i=0;i&amp;lt;text.length;i++) {&lt;br /&gt;
            maxWidth = Math.max (maxWidth, fm.stringWidth(text[i]));&lt;br /&gt;
        }&lt;br /&gt;
        Insets inset = getInsets();&lt;br /&gt;
        dim = new Dimension (maxWidth + inset.left + inset.right,&lt;br /&gt;
            text.length*fm.getHeight() + inset.top + inset.bottom);&lt;br /&gt;
        setSize (dim);&lt;br /&gt;
    }&lt;br /&gt;
    public void paint (Graphics g) {&lt;br /&gt;
        g.translate(100, 100);&lt;br /&gt;
        FontMetrics fm = g.getFontMetrics();&lt;br /&gt;
        for (int i=0;i&amp;lt;text.length;i++) {&lt;br /&gt;
            int x,y;&lt;br /&gt;
            x = (getWidth() - fm.stringWidth(text[i]))/2;&lt;br /&gt;
            y = (i+1)*fm.getHeight()-1;&lt;br /&gt;
            g.drawString (text[i], x, y);&lt;br /&gt;
        }&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 Center());&lt;br /&gt;
      f.setSize(300,300);&lt;br /&gt;
      f.setVisible(true);&lt;br /&gt;
    } &lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&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;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;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 ShadowText() {&lt;br /&gt;
  }&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;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&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;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;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;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&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;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;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;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&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;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;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;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&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;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;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;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  draw Bytes ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;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 MainClass extends JPanel {&lt;br /&gt;
  public static void main(String[] a) {&lt;br /&gt;
    JFrame f = new JFrame();&lt;br /&gt;
    f.setSize(400, 400);&lt;br /&gt;
    f.add(new MainClass());&lt;br /&gt;
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    f.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
  public void paint(Graphics g) {&lt;br /&gt;
    byte[] b = { 0x65, (byte) &amp;quot;B&amp;quot;, 0x66 };&lt;br /&gt;
    g.drawBytes(b, 0, b.length, 10, 30);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Draw Chars ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;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 GraphicsDrawChars extends JPanel {&lt;br /&gt;
  public static void main(String[] a) {&lt;br /&gt;
    JFrame f = new JFrame();&lt;br /&gt;
    f.setSize(400, 400);&lt;br /&gt;
    f.add(new GraphicsDrawChars());&lt;br /&gt;
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    f.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
  public void paint(Graphics g) {&lt;br /&gt;
    char[] c = { &amp;quot;W&amp;quot;, &amp;quot;a&amp;quot;, &amp;quot;t&amp;quot;, &amp;quot;c&amp;quot;, &amp;quot;h&amp;quot;, &amp;quot; &amp;quot;, &amp;quot;i&amp;quot;, &amp;quot;t&amp;quot;, &amp;quot; &amp;quot;, &amp;quot;D&amp;quot;, &amp;quot;u&amp;quot;, &amp;quot;k&amp;quot;, &amp;quot;e&amp;quot;, &amp;quot;!&amp;quot; };&lt;br /&gt;
    g.drawChars(c, 0, c.length, 10, 30);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&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;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;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;
    new BasicDraw();&lt;br /&gt;
  }&lt;br /&gt;
  BasicDraw() {&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;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&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;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;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;
    new BasicDraw();&lt;br /&gt;
  }&lt;br /&gt;
  BasicDraw() {&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;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&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;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;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;
    new BasicDraw();&lt;br /&gt;
  }&lt;br /&gt;
  BasicDraw() {&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;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&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;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;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;
    new BasicDraw();&lt;br /&gt;
  }&lt;br /&gt;
  BasicDraw() {&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;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Draw unicode with Graphics2D ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;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.GraphicsEnvironment;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
public class DrawStringI18N extends JFrame {&lt;br /&gt;
  public void paint(Graphics g) {&lt;br /&gt;
    Graphics2D graphics2D = (Graphics2D) g;&lt;br /&gt;
    GraphicsEnvironment.getLocalGraphicsEnvironment();&lt;br /&gt;
    graphics2D.setFont(new Font(&amp;quot;LucidaSans&amp;quot;, Font.PLAIN, 40));&lt;br /&gt;
    graphics2D.drawString(&amp;quot;\u05E9\u05DC\u05D5\u05DD \u05E2\u05D5\u05DC\u05DD&amp;quot;, 50, 75);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JFrame frame = new DrawStringI18N();&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    frame.setSize(200,200);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&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;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;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;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&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;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;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;
    new BasicDraw();&lt;br /&gt;
  }&lt;br /&gt;
  BasicDraw() {&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;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  How do I...Draw text? ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;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.Graphics;&lt;br /&gt;
import javax.swing.JComponent;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
class MyCanvas extends JComponent {&lt;br /&gt;
  public void paint(Graphics g) {&lt;br /&gt;
    g.setColor(Color.RED);&lt;br /&gt;
    g.drawString (&amp;quot;text&amp;quot;, 20, 30);  &lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
public class DrawText {&lt;br /&gt;
  public static void main(String[] a) {&lt;br /&gt;
    JFrame window = new JFrame();&lt;br /&gt;
    window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    window.setBounds(30, 30, 300, 300);&lt;br /&gt;
    window.getContentPane().add(new MyCanvas());&lt;br /&gt;
    window.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Paint a calendar ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;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.Graphics;&lt;br /&gt;
import java.awt.Graphics2D;&lt;br /&gt;
import java.awt.RenderingHints;&lt;br /&gt;
import java.text.SimpleDateFormat;&lt;br /&gt;
import java.util.Calendar;&lt;br /&gt;
import java.util.Date;&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;
  SimpleDateFormat month = new SimpleDateFormat(&amp;quot;MMMM&amp;quot;);&lt;br /&gt;
  SimpleDateFormat year = new SimpleDateFormat(&amp;quot;yyyy&amp;quot;);&lt;br /&gt;
  SimpleDateFormat day = new SimpleDateFormat(&amp;quot;d&amp;quot;);&lt;br /&gt;
  Date date = new Date();&lt;br /&gt;
  public void setDate(Date date) {&lt;br /&gt;
    this.date = date;&lt;br /&gt;
  }&lt;br /&gt;
  public void paintComponent(Graphics g) {&lt;br /&gt;
    ((Graphics2D) g).setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);&lt;br /&gt;
    g.fillRect(0, 0, getWidth(), getHeight());&lt;br /&gt;
    g.setColor(Color.black);&lt;br /&gt;
    g.drawString(month.format(date), 34, 36);&lt;br /&gt;
    g.setColor(Color.white);&lt;br /&gt;
    g.drawString(year.format(date), 235, 36);&lt;br /&gt;
    Calendar today = Calendar.getInstance();&lt;br /&gt;
    today.setTime(date);&lt;br /&gt;
    Calendar cal = Calendar.getInstance();&lt;br /&gt;
    cal.setTime(date);&lt;br /&gt;
    cal.set(Calendar.DATE, 1);&lt;br /&gt;
    cal.add(Calendar.DATE, -cal.get(Calendar.DAY_OF_WEEK) + 1);&lt;br /&gt;
    for (int week = 0; week &amp;lt; 6; week++) {&lt;br /&gt;
      for (int d = 0; d &amp;lt; 7; d++) {&lt;br /&gt;
        Color col = Color.black;&lt;br /&gt;
          g.drawString(day.format(cal.getTime()), d * 30 + 46 + 4,&lt;br /&gt;
              week * 29 + 81 + 20);&lt;br /&gt;
        cal.add(Calendar.DATE, +1);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JFrame frame = new JFrame();&lt;br /&gt;
    frame.setPreferredSize(new Dimension(300, 280));&lt;br /&gt;
    Main ch = new Main();&lt;br /&gt;
    ch.setDate(new Date());&lt;br /&gt;
    frame.getContentPane().add(ch);&lt;br /&gt;
    frame.setUndecorated(true);&lt;br /&gt;
    frame.pack();&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  TextAttribute.BACKGROUND: Set background for AttributedString ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;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.RenderingHints;&lt;br /&gt;
import java.awt.font.TextAttribute;&lt;br /&gt;
import java.text.AttributedString;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
public class TextAttributesBackground 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;
    AttributedString as1 = new AttributedString(&amp;quot;1234567890&amp;quot;);&lt;br /&gt;
    as1.addAttribute(TextAttribute.BACKGROUND, Color.LIGHT_GRAY, 2, 9);&lt;br /&gt;
    g2d.drawString(as1.getIterator(), 15, 60);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JFrame frame = new JFrame(&amp;quot;Text attributes&amp;quot;);&lt;br /&gt;
    frame.add(new TextAttributesBackground());&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    frame.setSize(620, 190);&lt;br /&gt;
    frame.setLocationRelativeTo(null);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  TextAttribute.FONT: Set font for AttributedString ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;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.RenderingHints;&lt;br /&gt;
import java.awt.font.TextAttribute;&lt;br /&gt;
import java.text.AttributedString;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
public class TextAttributesFont 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;
    Font font = new Font(&amp;quot;Serif&amp;quot;, Font.PLAIN, 40);&lt;br /&gt;
    AttributedString as1 = new AttributedString(&amp;quot;1234567890&amp;quot;);&lt;br /&gt;
    as1.addAttribute(TextAttribute.FONT, font);&lt;br /&gt;
    g2d.drawString(as1.getIterator(), 15, 60);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JFrame frame = new JFrame(&amp;quot;Text attributes&amp;quot;);&lt;br /&gt;
    frame.add(new TextAttributesFont());&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    frame.setSize(620, 190);&lt;br /&gt;
    frame.setLocationRelativeTo(null);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  TextAttribute.FOREGROUND: Set color for AttributedString ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;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.RenderingHints;&lt;br /&gt;
import java.awt.font.TextAttribute;&lt;br /&gt;
import java.text.AttributedString;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
public class TextAttributesColor 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;
    AttributedString as1 = new AttributedString(&amp;quot;1234567890&amp;quot;);&lt;br /&gt;
    as1.addAttribute(TextAttribute.FOREGROUND, Color.red, 0, 2);&lt;br /&gt;
    g2d.drawString(as1.getIterator(), 15, 60);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JFrame frame = new JFrame(&amp;quot;Text attributes&amp;quot;);&lt;br /&gt;
    frame.add(new TextAttributesColor());&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    frame.setSize(620, 190);&lt;br /&gt;
    frame.setLocationRelativeTo(null);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  TextAttribute.SIZE: Set SIZE for AttributedString ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;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.RenderingHints;&lt;br /&gt;
import java.awt.font.TextAttribute;&lt;br /&gt;
import java.text.AttributedString;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
public class TextAttributesSize 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;
    AttributedString as1 = new AttributedString(&amp;quot;1234567890&amp;quot;);&lt;br /&gt;
    as1.addAttribute(TextAttribute.SIZE, 40);&lt;br /&gt;
    g2d.drawString(as1.getIterator(), 15, 60);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JFrame frame = new JFrame(&amp;quot;Text attributes&amp;quot;);&lt;br /&gt;
    frame.add(new TextAttributesSize());&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    frame.setSize(620, 190);&lt;br /&gt;
    frame.setLocationRelativeTo(null);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  TextAttribute.STRIKETHROUGH: Set STRIKETHROUGH for AttributedString ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;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.RenderingHints;&lt;br /&gt;
import java.awt.font.TextAttribute;&lt;br /&gt;
import java.text.AttributedString;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
public class TextAttributesStrikeThrough 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;
    AttributedString as1 = new AttributedString(&amp;quot;1234567890&amp;quot;);&lt;br /&gt;
    as1.addAttribute(TextAttribute.STRIKETHROUGH, TextAttribute.STRIKETHROUGH_ON, 2, 8);&lt;br /&gt;
    g2d.drawString(as1.getIterator(), 15, 60);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JFrame frame = new JFrame(&amp;quot;Text attributes&amp;quot;);&lt;br /&gt;
    frame.add(new TextAttributesStrikeThrough());&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    frame.setSize(620, 190);&lt;br /&gt;
    frame.setLocationRelativeTo(null);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  TextAttribute.SUPERSCRIPT: Set SUPERSCRIPT for AttributedString ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;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.RenderingHints;&lt;br /&gt;
import java.awt.font.TextAttribute;&lt;br /&gt;
import java.text.AttributedString;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
public class TextAttributesSuperscript 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;
    AttributedString as1 = new AttributedString(&amp;quot;1234567890&amp;quot;);&lt;br /&gt;
    as1.addAttribute(TextAttribute.SUPERSCRIPT, TextAttribute.SUPERSCRIPT_SUPER, 5, 7);&lt;br /&gt;
    g2d.drawString(as1.getIterator(), 15, 60);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JFrame frame = new JFrame(&amp;quot;Text attributes&amp;quot;);&lt;br /&gt;
    frame.add(new TextAttributesSuperscript());&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    frame.setSize(620, 190);&lt;br /&gt;
    frame.setLocationRelativeTo(null);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  TextAttribute.UNDERLINE:  Set underline for AttributedString ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;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.RenderingHints;&lt;br /&gt;
import java.awt.font.TextAttribute;&lt;br /&gt;
import java.text.AttributedString;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
public class TextAttributesUnderline 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;
    AttributedString as1 = new AttributedString(&amp;quot;1234567890&amp;quot;);&lt;br /&gt;
    as1.addAttribute(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON, 3, 4);&lt;br /&gt;
    g2d.drawString(as1.getIterator(), 15, 60);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JFrame frame = new JFrame(&amp;quot;Text attributes&amp;quot;);&lt;br /&gt;
    frame.add(new TextAttributesUnderline());&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    frame.setSize(620, 190);&lt;br /&gt;
    frame.setLocationRelativeTo(null);&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&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;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;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;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  use Text Attributes to style text ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
/*&lt;br /&gt;
 * Copyright (c) 1995 - 2008 Sun Microsystems, Inc.  All rights reserved.&lt;br /&gt;
 *&lt;br /&gt;
 * Redistribution and use in source and binary forms, with or without&lt;br /&gt;
 * modification, are permitted provided that the following conditions&lt;br /&gt;
 * are met:&lt;br /&gt;
 *&lt;br /&gt;
 *   - Redistributions of source code must retain the above copyright&lt;br /&gt;
 *     notice, this list of conditions and the following disclaimer.&lt;br /&gt;
 *&lt;br /&gt;
 *   - Redistributions in binary form must reproduce the above copyright&lt;br /&gt;
 *     notice, this list of conditions and the following disclaimer in the&lt;br /&gt;
 *     documentation and/or other materials provided with the distribution.&lt;br /&gt;
 *&lt;br /&gt;
 *   - Neither the name of Sun Microsystems nor the names of its&lt;br /&gt;
 *     contributors may be used to endorse or promote products derived&lt;br /&gt;
 *     from this software without specific prior written permission.&lt;br /&gt;
 *&lt;br /&gt;
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS &amp;quot;AS&lt;br /&gt;
 * IS&amp;quot; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,&lt;br /&gt;
 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR&lt;br /&gt;
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR&lt;br /&gt;
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,&lt;br /&gt;
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,&lt;br /&gt;
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR&lt;br /&gt;
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF&lt;br /&gt;
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING&lt;br /&gt;
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS&lt;br /&gt;
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.&lt;br /&gt;
 */&lt;br /&gt;
import java.applet.Applet;&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.Frame;&lt;br /&gt;
import java.awt.Graphics;&lt;br /&gt;
import java.awt.event.WindowAdapter;&lt;br /&gt;
import java.awt.event.WindowEvent;&lt;br /&gt;
import java.awt.font.TextAttribute;&lt;br /&gt;
import java.util.Hashtable;&lt;br /&gt;
/**&lt;br /&gt;
 * This class demonstrates how to use Text Attributes to style text.&lt;br /&gt;
 */&lt;br /&gt;
public class AttributedText extends Applet {&lt;br /&gt;
  public void paint(Graphics g) {&lt;br /&gt;
    Font font = new Font(Font.SERIF, Font.PLAIN, 24);&lt;br /&gt;
    g.setFont(font);&lt;br /&gt;
    String text = &amp;quot;Too WAVY&amp;quot;;&lt;br /&gt;
    g.drawString(text, 45, 30);&lt;br /&gt;
    Hashtable&amp;lt;TextAttribute, Object&amp;gt; map = new Hashtable&amp;lt;TextAttribute, Object&amp;gt;();&lt;br /&gt;
    /* Kerning makes the text spacing more natural */&lt;br /&gt;
    map.put(TextAttribute.KERNING, TextAttribute.KERNING_ON);&lt;br /&gt;
    font = font.deriveFont(map);&lt;br /&gt;
    g.setFont(font);&lt;br /&gt;
    g.drawString(text, 45, 60);&lt;br /&gt;
    /* Underlining is easy */&lt;br /&gt;
    map.put(TextAttribute.UNDERLINE, TextAttribute.UNDERLINE_ON);&lt;br /&gt;
    font = font.deriveFont(map);&lt;br /&gt;
    g.setFont(font);&lt;br /&gt;
    g.drawString(text, 45, 90);&lt;br /&gt;
    /* Strikethrouh is easy */&lt;br /&gt;
    map.put(TextAttribute.STRIKETHROUGH, TextAttribute.STRIKETHROUGH_ON);&lt;br /&gt;
    font = font.deriveFont(map);&lt;br /&gt;
    g.setFont(font);&lt;br /&gt;
    g.drawString(text, 45, 120);&lt;br /&gt;
    /* This colour applies just to the font, not other rendering */&lt;br /&gt;
    map.put(TextAttribute.FOREGROUND, Color.BLUE);&lt;br /&gt;
    font = font.deriveFont(map);&lt;br /&gt;
    g.setFont(font);&lt;br /&gt;
    g.drawString(text, 45, 150);&lt;br /&gt;
  }&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    Frame f = new Frame(&amp;quot;Attributed Text Sample&amp;quot;);&lt;br /&gt;
    f.addWindowListener(new WindowAdapter() {&lt;br /&gt;
      public void windowClosing(WindowEvent e) {&lt;br /&gt;
        System.exit(0);&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    f.add(&amp;quot;Center&amp;quot;, new AttributedText());&lt;br /&gt;
    f.setSize(new Dimension(250, 200));&lt;br /&gt;
    f.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	</feed>