トップ 新規 編集 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

Swingの基本:GUI部品のイベント処理(タイマー)

 GUI部品のイベント処理(タイマー)

java.swing.Timerを用いることで、アニメーションなどの経過時間に応じたイベント処理を実行することが可能。Timerを作成し、そのさいに、ActionListenerを設定する形でイベント処理を行っていく。

 タイマーイベントの例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package sample.swing.event;

import java.awt.Dimension;
import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JFrame;
import javax.swing.Timer;

@SuppressWarnings("serial")
public class TimerSample extends JFrame {
    private Rectangle displaySize = GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds();
    int addX=10,addY=10;
    public TimerSample() {
        super("タイマーイベントサンプル");
        setSize(640,480);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // ×を押したときに終了するように
        setVisible(true);
        new Timer(100, new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                Dimension currentSize = getSize();
                if((currentSize.width>=displaySize.width)||(currentSize.width<=getMinimumSize().width+150)) {    //最大化、最小化ボタンなどがあるので+150
                    addX = -addX;
                }
                if((currentSize.height>=displaySize.height)||(currentSize.height<=getMinimumSize().height)) {
                    addY = -addY;
                }
                setSize(currentSize.width+addX, currentSize.height+addY);
            }
        }).start();
    }

    public static void main(String[] args) {
        new TimerSample();
    }
}

 課題

TimerSample.java

最終更新時間:2008年07月10日 00時52分17秒