import java.awt.*; import java.awt.event.*; import java.applet.*; public class ArcTest extends Applet implements WindowListener{ ArcControls controls; 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.addWindowListener(arcTest); //f.show(); f.setVisible(true); } //Override Applet Methods @Override public void init(){ setLayout(new BorderLayout()); ArcCanvas c = new ArcCanvas(); add("Center", c); add("South", controls = new ArcControls(c)); } @Override public void start(){ controls.setEnabled(true); } @Override public void stop(){ controls.setEnabled(false); } //Override WindowListener Methods @Override public void windowActivated(WindowEvent e)//当窗口从非激活到激活状态时监视器调用该方法 { } @Override public void windowClosed(WindowEvent e)//当窗口关闭时 { } @Override public void windowClosing(WindowEvent e)//窗口正被关闭 { // 退出 System.exit(0); } @Override public void windowDeactivated(WindowEvent e)//激活到非激活状态 { } @Override public void windowDeiconified(WindowEvent e)//当窗口撤销图标化时 { } @Override public void windowIconified(WindowEvent e)//当窗口图标化时 { } @Override public void windowOpened(WindowEvent e)//当窗口打开时 { } } 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; System.out.print("height = "); System.out.println(r.height); System.out.print("nwidth = "); System.out.println(r.width); 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.red); 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("N = " + endAngle, sx, sy + 14); } public void redraw(boolean filled, int start, int end){ this.filled = filled; this.startAngle = start; this.endAngle = end; repaint(); } } class ArcControls extends Panel implements ActionListener{ TextField s; TextField e; ArcCanvas canvas; public ArcControls(ArcCanvas canvas){ Button b = null; this.canvas = canvas; add(s = new TextField("30", 4)); add(e = new TextField("90", 4)); b = new Button("Fill"); b.addActionListener(this); add(b); b = new Button("Draw"); b.addActionListener(this); add(b); canvas.redraw(true, Integer.parseInt(s.getText().trim()), Integer.parseInt(e.getText().trim())); } @Override public void actionPerformed(ActionEvent ev){ String label = ev.getActionCommand(); System.out.println(label); canvas.redraw(label.equals("Fill"), Integer.parseInt(s.getText().trim()), Integer.parseInt(e.getText().trim())); } }
javac -encoding UTF-8 -Xlint:deprecation ArcTest.java
jar cvf ArcTest.jar ArcControls.class ArcCanvas.class ArcTest.class
java ArcTest