import java.awt.*; import javax.swing.*; import java.awt.event.*; public class Test { public static void main (String[] args) { Win win = new Win("Test Window"); } } class Win extends JFrame { Win (String name) { // Frameクラスのコンストラクタ(Windowのタイトルを引き渡す) super(name); // Windowの大きさ setSize(400, 100); // パネルの貼り付け D_Panel pn = new D_Panel(); pn.setBackground(new Color(144, 238, 144)); getContentPane().add(pn); // ウィンドウを表示 setVisible(true); // イベントアダプタ addWindowListener(new WinEnd()); } /************/ /* 終了処理 */ /************/ class WinEnd extends WindowAdapter { public void windowClosing(WindowEvent e) { System.exit(0); } } } class D_Panel extends JPanel { /********/ /* 描画 */ /********/ public void paintComponent (Graphics g) { super.paintComponent(g); // 親クラスの描画(必ず必要) int x, y; String str = new String("昨日東京へ行って来ました"); String str1; Font f1 = new Font("MS 明朝", Font.BOLD, 20); Font f2 = new Font("MS 明朝", Font.ITALIC, 12); FontMetrics fm1 = g.getFontMetrics(f1); FontMetrics fm2 = g.getFontMetrics(f2); // 塗りつぶした正方形(左上x,y,幅,高さ) g.setColor(Color.white); g.fill3DRect(20, 15, 350, 30, true); // 文字列(文字列,位置x,y) x = 25; y = 37; g.setFont(f1); g.setColor(Color.black); str1 = str.substring(0, 2); g.drawString(str1, x, y); x += fm1.stringWidth(str1); g.setFont(f2); g.setColor(Color.red); str1 = str.substring(2, 5); g.drawString(str1, x, y); x += fm2.stringWidth(str1); g.setFont(f1); g.setColor(Color.blue); str1 = str.substring(5); g.drawString(str1, x, y); } }