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