top / index / prev / next / target / source

2007-01-05 diary: シンプルなJFC/Swingのフレームサンプル

いがぴょんの日記 日記形式でつづる いがぴょんコラム ウェブページです。

old-v2

シンプルなJFC/Swingのフレームサンプル

基準となるシンプルな Swingフレーム (JFrame) サンプルを作成しました。

シンプルなJFC/Swingのフレームサンプル

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();

ではでは。

ここからいがぴょん

ツッコミ ありがとうございます。感謝の気持ちでいっぱいです。ご指摘の通りです。さっそく修正しました。


この日記について