﻿// MyGraph212.java						2003.05.06
//								2003.05.04
//							by M.Yanaka
//	大きさを指定して正方形または円を描く（JSliderを用いる）

import	java.awt.*;
import	java.awt.event.*;
import	javax.swing.*;
import	javax.swing.event.*;

public class MyGraph212 extends JFrame implements ActionListener {

	int r;
	int sw;
	JSlider	slider;
	String[] str = {"正方形", "円", "終了"};
	JButton[] bt = new JButton[str.length];

	public MyGraph212(String title) {
		super(title);
		setSize(512,512);
		setBackground(Color.white);
		Container cp = getContentPane();
		cp.setBackground(getBackground());
		cp.setLayout(new FlowLayout(FlowLayout.LEFT));

		sw = 0;	// set rectangle
		r = 100;
		for (int i = 0; i < str.length; i++) {
			bt[i] = new JButton(str[i]);
			bt[i].addActionListener(this);
			cp.add(bt[i]);
		}
		slider = new JSlider(JSlider.HORIZONTAL,0, 256, r);
		cp.add(slider);
		slider.addChangeListener(new SliderListener());
		addWindowListener(new MyWindowAdapter());
		setVisible(true);
	}

	public static void main(String argv[]) {
		MyGraph212 app = new MyGraph212("円と正方形(MyGraph212)");
	}

	public void paint(Graphics g) {
		super.paint(g);
		if (sw == 0)
			g.drawRect(256-r, 256-r, r*2+1, r*2+1);
		else
			g.drawOval(256-r, 256-r, r*2+1, r*2+1);
	}

	public void actionPerformed(ActionEvent evt) {
		if (evt.getSource() == bt[0]) {
			sw = 0;
			repaint();
		} else if (evt.getSource() == bt[1]) {
			sw = 1;
			repaint();
		} else if (evt.getSource() == bt[2]) {
			dispose();
			System.exit(0);
		}
	}

	class MyWindowAdapter extends WindowAdapter {
		public void windowClosing(WindowEvent evt) {
			dispose();
		}
		public void windowClosed(WindowEvent evt) {
			System.exit(1);
		}
	}

	class SliderListener implements ChangeListener {
		public void stateChanged(ChangeEvent evt) {
			if (evt.getSource() == slider) {
				r = slider.getValue();
				repaint();
			}
		}
	}
}
