アプレット プログラム サンプル 文字列の描画

アプレットのグラフィック領域に文字列を表示するサンプルです。



文字の描画

このページには、以下のサンプルを掲載しています。 下の項目をクリックをすると各サンプルにジャンプします。 ※2週間以内の新着記事はNewアイコン、更新記事はUpアイコンが表示されます。
  1. 文字の描画  
  2. フォントを指定して文字を表示する  
  3. 文字を画面中央に表示する  
  4. 色付き文字を表示する  
  5. 文字の回転  

■文字列の表示

[ サンプルプログラムのソースコード - StringSample01.java - ]
  1. import javax.swing.JApplet;
  2. import java.awt.Color;
  3. import java.awt.Graphics;
  4. import java.awt.Graphics2D;
  5. import java.awt.image.BufferedImage;
  6. public class StringSmaple01 extends JApplet {
  7.   private static final long serialVersionUID = 1L;
  8.   private int width;
  9.   private int height;
  10.   private BufferedImage bi;
  11.   private Graphics2D offs;
  12.   public void init(){
  13.     width  = getWidth();
  14.     height = getHeight();
  15.     bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
  16.     offs = (Graphics2D)bi.getGraphics();
  17.   }
  18.   public void paint(Graphics g){
  19.     offs.setBackground(Color.WHITE);
  20.     offs.clearRect(0, 0, width, height);
  21.     offs.setColor(Color.BLACK);
  22.     offs.drawString("文字列表示", 10, 30);
  23.     g.drawImage(bi, 0, 0, this);
  24.   }
  25.   public void update() {
  26.     repaint();
  27.   }
  28. }
[ サンプルプログラムの実行結果 ]

[ サンプルプログラムの解説 ]
アプレット画面に文字列を表示するには、GraphicsオブジェクトのdrawStringメソッドを使います。第一引数に表示する文字列をStringオブジェクトで指定します。 第2、第3引数に表示する座標を指定します。表示座標は、表示文字列を囲む矩形の左下の座標になります。



■フォントを指定して文字を表示する

[ サンプルプログラムのソースコード - StringSample02.java - ]
  1. import javax.swing.JApplet;
  2. import java.awt.Color;
  3. import java.awt.Font;
  4. import java.awt.Graphics;
  5. import java.awt.Graphics2D;
  6. import java.awt.image.BufferedImage;
  7. public class StringSmaple02 extends JApplet {
  8.   private static final long serialVersionUID = 1L;
  9.   private int width;
  10.   private int height;
  11.   private BufferedImage bi;
  12.   private Graphics2D offs;
  13.   public void init(){
  14.     width  = getWidth();
  15.     height = getHeight();
  16.     bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
  17.     offs = (Graphics2D)bi.getGraphics();
  18.   }
  19.   public void paint(Graphics g){
  20.     offs.setBackground(Color.WHITE);
  21.     offs.clearRect(0, 0, width, height);
  22.     offs.setColor(Color.BLACK);
  23.     offs.setFont(new Font(Font.SERIF,Font.BOLD,72));
  24.     offs.drawString("文字列表示", 10, 80);
  25.     g.drawImage(bi, 0, 0, this);
  26.   }
  27.   public void update() {
  28.     repaint();
  29.   }
  30. }
[ サンプルプログラムの実行結果 ]

[ サンプルプログラムの解説 ]
描画する文字列にフォントを指定するには、文字列を描画する前にGraphicオブジェクトに対してsetFontメソッドを使ってフォントの 設定を行います。setFontメソッドには、引数としてFontオブジェクトを渡します。サンプルでは、SERIFフォントをBOLDスタイル、フォントサイズ72ポイント で設定しています。(27行目)



■文字を画面中央に表示する

[ サンプルプログラムのソースコード - StringSample03.java - ]
  1. import javax.swing.JApplet;
  2. import java.awt.Color;
  3. import java.awt.Font;
  4. import java.awt.FontMetrics;
  5. import java.awt.Graphics;
  6. import java.awt.Graphics2D;
  7. import java.awt.image.BufferedImage;
  8. public class StringSmaple03 extends JApplet {
  9.   private static final long serialVersionUID = 1L;
  10.   private int width;
  11.   private int height;
  12.   private BufferedImage bi;
  13.   private Graphics2D offs;
  14.   public void init(){
  15.     width  = getWidth();
  16.     height = getHeight();
  17.     bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
  18.     offs = (Graphics2D)bi.getGraphics();
  19.   }
  20.   public void paint(Graphics g){
  21.     offs.setBackground(Color.WHITE);
  22.     offs.clearRect(0, 0, width, height);
  23.     offs.setColor(Color.BLACK);
  24.     offs.setFont(new Font(Font.SERIF,Font.BOLD,21));
  25.     FontMetrics fm = offs.getFontMetrics();
  26.     String mes = "文字列表示";
  27.     int strWidth = fm.stringWidth(mes);
  28.     int strHeight = fm.getHeight();
  29.     offs.drawString(mes, 
  30.            ( width - strWidth ) / 2, ( height - strHeight ) / 2);
  31.     g.drawImage(bi, 0, 0, this);
  32.   }
  33.   public void update() {
  34.     repaint();
  35.   }
  36. }
[ サンプルプログラムの実行結果 ]

[ サンプルプログラムの解説 ]
文字列を画面中央に表示するためには、まずFontMetricsオブジェクトを取得します。 FontMetricsオブジェクトは、GraphicsオブジェクトのgetFontMetricsオブジェクトから取得できます。 getFontMetricsオブジェクトでは、メソッド実行時点で設定されているFontでFontMetricsオブジェクトが生成されます。 FontMetricsオブジェクトは、FontMetorics生成時に直接Fontを指定することでも取得できます。 FontMetricsオブジェクトでは、描画する文字列の横幅等を取得できます。 サンプルでは31行目で文字列の横サイズ、32行目で縦サイズを取得しています。 文字列の横サイズと縦サイズが取得できたら、次式で文字列の書き出し位置を算出します。
文字列の書き出し位置のX座標 = ( 文字列の横サイズ − 画面の横幅 ) ÷ 2
文字列の書き出し位置のY座標 = ( 文字列の縦サイズ − 画面の縦幅 ) ÷ 2
算出したX、Y座標を元に文字列の表示を行います。(33、34行目)



■色付き文字を表示する

[ サンプルプログラムのソースコード - StringSample04.java - ]
  1. import javax.swing.JApplet;
  2. import java.awt.Color;
  3. import java.awt.Font;
  4. import java.awt.Graphics;
  5. import java.awt.Graphics2D;
  6. import java.awt.image.BufferedImage;
  7. public class StringSmaple02 extends JApplet {
  8.   private static final long serialVersionUID = 1L;
  9.   private int width;
  10.   private int height;
  11.   private BufferedImage bi;
  12.   private Graphics2D offs;
  13.   public void init(){
  14.     width  = getWidth();
  15.     height = getHeight();
  16.     bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
  17.     offs = (Graphics2D)bi.getGraphics();
  18.   }
  19.   public void paint(Graphics g){
  20.     offs.setBackground(Color.WHITE);
  21.     offs.clearRect(0, 0, width, height);
  22.     offs.setColor(new Color(0x90,0xFF,0x90));
  23.     offs.setFont(new Font(Font.SERIF,Font.BOLD,72));
  24.     offs.drawString("文字列表示", 10, 80);
  25.     g.drawImage(bi, 0, 0, this);
  26.   }
  27.   public void update() {
  28.     repaint();
  29.   }
  30. }
[ サンプルプログラムの実行結果 ]

[ サンプルプログラムの解説 ]
描画する文字列の色を指定するには、文字列を描画する前にGraphicオブジェクトに対してsetColorメソッドを使って描画色の 設定を行います。setColorメソッドには、引数としてColorオブジェクトを渡します。サンプルでは、Color(0x90,0xFF,0x90)の カラーオブジェクトを生成して設定しています。(26行目)



■文字の回転

[ サンプルプログラムのソースコード - StringSample05.java - ]
  1. import javax.swing.JApplet;
  2. import java.awt.Color;
  3. import java.awt.Font;
  4. import java.awt.FontMetrics;
  5. import java.awt.Graphics;
  6. import java.awt.Graphics2D;
  7. import java.awt.geom.AffineTransform;
  8. import java.awt.image.BufferedImage;
  9. public class StringSmaple05 extends JApplet {
  10.   private static final long serialVersionUID = 1L;
  11.   private int width;
  12.   private int height;
  13.   private BufferedImage bi;
  14.   private Graphics2D offs;
  15.   public void init(){
  16.     width  = getWidth();
  17.     height = getHeight();
  18.     bi = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB);
  19.     offs = (Graphics2D)bi.getGraphics();
  20.   }
  21.   public void paint(Graphics g){
  22.     offs.setBackground(Color.WHITE);
  23.     offs.clearRect(0, 0, width, height);
  24.     offs.setColor(new Color(0x90,0xFF,0x90));
  25.     offs.setFont(new Font(Font.SERIF,Font.BOLD,36));
  26.     FontMetrics fm = offs.getFontMetrics();
  27.     String mes = "文字列表示";
  28.     AffineTransform at = new AffineTransform();
  29.     at.setToRotation(Math.toRadians(45), width / 2, height / 2 );
  30.     offs.setTransform(at);
  31.     offs.drawString(mes, 
  32.                     ( width - fm.stringWidth(mes) ) / 2,
  33.                     ( height - fm.getHeight() ) / 2);
  34.     g.drawImage(bi, 0, 0, this);
  35.   }
  36.   public void update() {
  37.     repaint();
  38.   }
  39. }
[ サンプルプログラムの実行結果 ]

[ サンプルプログラムの解説 ]
四角形の描画(回転)(RectSmaple09.java)のサンプルと同じくイメージ画像を右に45度回転させています。 回転のやり方は、四角形の描画や他の図形のサンプルと同じです。





最終更新日:2019/02/13

2015-03-01からの訪問者数
  2736 人