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

