import java.awt.*;
import java.awt.event.*;
import java.applet.*;class ArcCanvas extends Canvas
{
int startAngle = 0;
int endAngle = 45;
boolean filled = false;
Font font; public void paint(Graphics g)
{
Rectangle r = getBounds();
int hlines = r.height/10;
int vlines = r.width/10; g.setColor(Color.pink);
for(int i=1;i <= hlines;i++) g.drawLine(0,i*10,r.width,i*10);
for(int i=1;i <= vlines;i++) g.drawLine(i*10,0,i*10,r.height); g.setColor(Color.blue);
if(filled)
{
g.fillArc(0,0,r.width-1,r.height-1,startAngle,endAngle);
}
else
{
g.drawArc(0,0,r.width-1,r.height -1,startAngle,endAngle);
} g.setColor(Color.black);
g.setFont(font);
g.drawLine(0,r.height/2,r.width,r.height/2);
g.drawLine(r.width/2,0,r.width/2,r.height);
g.drawLine(0,0,r.width,r.height);
g.drawLine(r.width,0,0,r.height); int sx=10;
int sy=r.height -28;
g.drawString("S= "+startAngle,sx,sy);
g.drawString("E= "+endAngle,sx,sy+14);
} public void redraw(boolean filled,int start,int end)
{
this.filled = filled;
this.startAngle = start;
this.endAngle = end;
repaint();
}
}class ArcControl extends Panel implements ActionListener
{
Scrollbar s;
Scrollbar e;
ArcCanvas canvas; public ArcControl(ArcCanvas canvas)
{
Button b = null;
this.canvas = canvas;
setLayout(new GridLayout(3,1));
add(s = new Scrollbar(Scrollbar.HORIZONTAL,0,1,0,360));
add(e = new Scrollbar(Scrollbar.HORIZONTAL,45,1,0,360));
Panel subPanel = new Panel();
b = new Button("Fill");
b.addActionListener(this);
subPanel.add(b);
b = new Button("Draw");
b.addActionListener(this);
subPanel.add(b);
add(subPanel);
} public void actionPerformed(ActionEvent ev)
{
String label = ev.getActionCommand();
canvas.redraw(label.equals("Fill"),s.getValue(),e.getValue());
}
}public class ArcTest extends Applet
{
ArcControl controls;
ArcCanvas canvas; public void init()
{
setLayout(new BorderLayout());
canvas = new ArcCanvas();
add("Center",canvas);
add("South",controls = new ArcControl(canvas));
} public void destroy()
{
remove(controls);
remove(canvas);
} public void start()
{
controls.setEnabled(true);
} public void stop()
{
controls.setEnabled(false);
} public void processEvent(AWTEvent e)
{
if(e.getID() == Event.WINDOW_DESTROY)
{
System.exit(0);
}
} public static void main(String args[])
{
Frame f = new Frame("ArcTest");
ArcTest arcTest = new ArcTest(); arcTest.init();
arcTest.start(); f.add("Center",arcTest);
f.setSize(300,300);
f.show();
}
}