解答例 - 実習課題5 - 9.基本的なコンポーネント3
(実習課題5)
実習課題4のプログラムを改良しなさい。
- マウスカーソルがプログレスバーの上に来たとき、ツールチップを表示するようにする事。
- 表示する値は、その時のプログレスバーの値。
- (ヒント)「JProgressBar」を継承したクラスを作成し、「getToolTipText」メソッドをオーバーライドする事。
解答例
/**
* ProgressFrame2.java
* TECHSCORE Javaユーザインタフェース9章 実習課題5
*
* Copyright (c) 2004 Four-Dimensional Data, Inc.
*/
package com.techscore.ui.chapter9.exercise5;
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;
import javax.swing.ToolTipManager;
class ProgressBarFrame2 extends JFrame implements ActionListener {
private HelpProgressBar bar;
private JButton startButton, stopButton;
private Timer t;
public ProgressBarFrame2() {
super("ProgressBarFrame2");
setDefaultCloseOperation(EXIT_ON_CLOSE);
t = new Timer(1000, this);
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");
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() == t) {
bar.setValue(bar.getValue() + 10);
if (bar.getValue() >= 100) {
bar.setValue(100);
t.stop();
}
}
}
public static void main(String args[]) {
new ProgressBarFrame2().setVisible(true);
}
class HelpProgressBar extends JProgressBar {
public HelpProgressBar() {
ToolTipManager.sharedInstance().registerComponent(this);
}
public String getToolTipText() {
return (String.valueOf(getValue()));
}
}
}

