top / index / prev / next / target / source
 日記形式でつづる いがぴょんコラム ウェブページです。
基準となるシンプルな Swingフレーム (JFrame) サンプルを作成しました。
SimpleSwingFrame.java
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Rectangle;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class SimpleSwingFrame extends JPanel {
    public SimpleSwingFrame() {
        // 背景色を白色にします。
        setBackground(Color.white);
    }
    public void paintComponent(final Graphics argGraphics) {
        super.paintComponent(argGraphics);
        // 赤色で画面の大きさいっぱいに円を描画します。
        argGraphics.setColor(Color.red);
        final Rectangle rect = getBounds();
        argGraphics.drawOval(0, 0, rect.width, rect.height);
    }
    public static void main(final String[] args) {
        // JFrameを作成して自分自身を貼り付け、これを表示します。
        final JFrame frame = new JFrame("シンプルなSwingフレームサンプル");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.getContentPane().add(new SimpleSwingFrame());
        frame.setLocationRelativeTo(null);
        frame.setSize(400, 400);
        frame.setVisible(true);
    }
}
2007.01.21追記 渡辺義則さんから下記のツッコミがありました。
チョット気になるところがあったのでメールします。
getClipBounds()はウィンドウの矩形ではなく、描画する矩形が返されます。
ウィンドウが半分隠れている場合は、その部分は含まれません。なので、このプログラムを実行し、別のウィンドウで部分的に隠してやると描画が乱れます。
こうすればよいでしょう。 //final Rectangle rect = argGraphics.getClipBounds(); ←ココ☆ final Rectangle rect = getBounds();
ではでは。
ここからいがぴょん
ツッコミ ありがとうございます。感謝の気持ちでいっぱいです。ご指摘の通りです。さっそく修正しました。