目次へ

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

(実習課題6)

実習課題5のプログラムを改良しなさい。

  • 2つのボタンにニーモニックを指定する事。
  • ウィンドウの上でキーを押したら(どのキーでも良い)、バーの伸びが停止するようにする事。

解答例

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

package com.techscore.ui.chapter9.exercise6;

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

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

class ProgressBarFrame3 extends JFrame implements ActionListener {

    private HelpProgressBar bar;
    private JButton startButton, stopButton;
    private Timer t = new Timer(1000, this);

    public ProgressBarFrame3() {
        super("ProgressBarFrame3");
        setDefaultCloseOperation(EXIT_ON_CLOSE);

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

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

        startButton = new JButton("start(alt+n)");
        startButton.addActionListener(this);
        startButton.setMnemonic('n');
        panel.add(startButton);

        stopButton = new JButton("stop(alt+m)");
        stopButton.addActionListener(this);
        stopButton.setMnemonic('m');
        panel.add(stopButton);

        this.addKeyListener(new MyKeyAdapter());
        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() == t) {
            bar.setValue(bar.getValue() + 10);
            if (bar.getValue() >= 100) {
                bar.setValue(100);
                t.stop();
            }
        }
        requestFocusInWindow();
    }

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

    class HelpProgressBar extends JProgressBar {
        public HelpProgressBar() {
            ToolTipManager.sharedInstance().registerComponent(this);
        }
        public String getToolTipText() {
            return (String.valueOf(getValue()));
        }
    }

    class MyKeyAdapter extends KeyAdapter {
        public void keyTyped(KeyEvent e) {
            t.stop();
        }
    }

}

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp
  • シナジーマーケティング研究開発グループブログ