【Java】【Swing】 独自のグラフィックを表示させる [1]

独自のグラフィックを表示させるには

 * paintComponent() などをオーバーライドして、引数 Graphics を使って描画する

Graphics/Graphics2D の主なメソッド

 * g.drawImage() : 画像を描画
 * g.drawString() : 文字列の描画

 * g.drawRect() : 四角形の描画
 * g.drawRoundRect() : 四角形(角が丸み)の描画

文字列の扱いについて

 * 以下の関連記事を参照のこと
http://blogs.yahoo.co.jp/dk521123/36673357.html

サンプル

import java.awt.Color;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;

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

public class CustomSwing {
  public static void main(String[] args) {
    JFrame frame = new JFrame("BorderLayout Demo");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    JPanel panel = new JPanel() {
      private static final long serialVersionUID = 1L;

      @Override
      protected void paintComponent(Graphics g) {
        super.paintComponent(g);
        g.setFont(new Font("Serif", Font.BOLD, 36));
        FontMetrics fontMetrics = g.getFontMetrics();
        g.setColor(Color.GRAY);
        String message = "Hello World!";
        g.fillRect(10, 10, fontMetrics.stringWidth(message) + 2, fontMetrics.getHeight() + 2);
        g.setColor(Color.BLUE);
        g.drawString(message, 11, fontMetrics.getHeight());
      }
    };

    frame.add(panel);
    frame.pack();
    frame.setSize(320, 160);
    frame.setVisible(true);
  }
}


関連記事

文字列を描画するための情報を取得するには...

http://blogs.yahoo.co.jp/dk521123/36673357.html