解答例 - 実習課題4 - 8.基本的なコンポ−ネント2
(実習課題4)
以下のプログラムを作成しなさい。
- ウィンドウに含まれるコンポーネントはスライダーとラベル。
- ラベルにはスライダーの現在値が表示されるようにする事。
- スライダーを動かすと、ラベルの値もそれに合わせて変化するようにする事。
- ラベルには目盛りを表示する事。
- (ヒント)「ChangeListener」を利用する。
解答例
/** * SliderFrame.java * TECHSCORE Javaユーザインタフェース8章 実習課題4 * * Copyright (c) 2004 Four-Dimensional Data, Inc. */ package com.techscore.ui.chapter8.exercise4; import java.awt.BorderLayout; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JSlider; import javax.swing.SwingConstants; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; public class SliderFrame extends JFrame implements ChangeListener { private JLabel label; private JSlider slider; static final int MIN_VALUE = 0; static final int MAX_VALUE = 100; public SliderFrame() { super("SliderFrame"); setDefaultCloseOperation(EXIT_ON_CLOSE); slider = new JSlider(SwingConstants.HORIZONTAL, MIN_VALUE, MAX_VALUE, MIN_VALUE); slider.addChangeListener(this); label = new JLabel("", SwingConstants.CENTER); setLabelValue(); getContentPane().add(label); getContentPane().add(new JLabel(String.valueOf(MIN_VALUE)), BorderLayout.WEST); getContentPane().add(new JLabel(String.valueOf(MAX_VALUE), SwingConstants.RIGHT), BorderLayout.EAST); getContentPane().add(slider, BorderLayout.SOUTH); pack(); } private void setLabelValue() { label.setText(String.valueOf(slider.getValue())); } public void stateChanged(ChangeEvent e) { setLabelValue(); } public static void main(String args[]) { new SliderFrame().setVisible(true); } }