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

