目次へ

解答例 - 実習課題4 - 9.基本的なコンポーネント3

(実習課題4)

以下のプログラムを作成しなさい。

  • ウィンドウに含まれるコンポーネントはプログレスバーと「開始」ボタン・「停止」ボタン。
  • 「開始」ボタンを押すと、バーが0%から100%まで、1秒ごとに10%ずつ伸びるようにする事。
  • 「停止」ボタンを押すと、バーの伸びは停止するようにする事。
  • (ヒント)「javax.swing.Timer」クラスを使用する。

解答例

/**
 * ProgressFrame.java
 * TECHSCORE Javaユーザインタフェース9章 実習課題4
 *
 * Copyright (c) 2004 Four-Dimensional Data, Inc.
 */

package com.techscore.ui.chapter9.exercise4;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JProgressBar;
import javax.swing.Timer;

public class ProgressBarFrame extends JFrame implements ActionListener {

    private JProgressBar bar;
    private JButton startButton, stopButton;
    private Timer t;

    public ProgressBarFrame() {
        super("ProgressBarFrame");

        setDefaultCloseOperation(EXIT_ON_CLOSE);
        t = new Timer(1000, this);

        bar = new JProgressBar();
        getContentPane().add(bar, BorderLayout.CENTER);

        JPanel panel = new JPanel(new GridLayout(1, 2));
        getContentPane().add(panel, BorderLayout.SOUTH);

        startButton = new JButton("start");
        startButton.addActionListener(this);
        panel.add(startButton);

        stopButton = new JButton("stop");
        stopButton.addActionListener(this);
        panel.add(stopButton);

        pack();
    }

    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == startButton) {
            bar.setValue(0);
            t.start();
        } else if (e.getSource() == stopButton) {
            t.stop();
        } else if (e.getSource().equals(t)) {
            bar.setValue(bar.getValue() + 10);
            if (bar.getValue() >= 100) {
                bar.setValue(100);
                t.stop();
            }
        }
    }

    public static void main(String args[]) {
        new ProgressBarFrame().setVisible(true);
    }

}

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp