解答例 - 実習課題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(); } } }