import java.awt.*; import java.awt.event.*; import java.awt.geom.*; import javax.swing.*; public class DrawCircleApp extends JApplet{ boolean type = false; public void init(){ super.init(); getContentPane().add(new DrawPanel(), BorderLayout.CENTER); Action c = new CircleAction(); Action a = new CancleAction(); JPanel p = new JPanel(); p.add(new JButton(c)); p.add(new JButton(a)); getContentPane().add(p, BorderLayout.NORTH); final JMenu fileMenu = new JMenu("Action"); fileMenu.add(c); fileMenu.add(a); final JMenuBar menuBar = new JMenuBar(); menuBar.add(fileMenu); setJMenuBar(menuBar); } public static void main(String[] args){ JApplet applet = new DrawCircleApp(); JFrame frame = new JFrame("DrawCircle"); // To close the application: frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(applet); frame.setSize(100, 50); applet.init(); applet.start(); frame.setVisible(true); } class CircleAction extends AbstractAction{ public CircleAction(){ putValue(Action.NAME, "畫圓"); putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("ctrl C")); } public void actionPerformed(ActionEvent e){ type = true; } } class CancleAction extends AbstractAction{ public CancleAction(){ putValue(Action.NAME, "清空"); putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("ctrl D")); } public void actionPerformed(ActionEvent e){ type = false; } } class DrawPanel extends JPanel implements MouseListener, MouseMotionListener{ Point2D p1, p2; public DrawPanel(){ addMouseListener(this); addMouseMotionListener(this); } protected void paintComponent(Graphics g){ super.paintComponent(g); Graphics2D g2d = (Graphics2D)g; if(type){ if((p1 == null) | (p2 == null)){ return; } Ellipse2D e = new Ellipse2D.Double(p1.getX(), p1.getY(), p2.getX() - p1.getX(), p2.getY() - p1.getY()); g2d.draw(e); } } public void mouseClicked(MouseEvent e){} public void mousePressed(MouseEvent e){ p1 = (Point2D)e.getPoint(); } public void mouseReleased(MouseEvent e){ p2 = (Point2D)e.getPoint(); repaint(); } public void mouseEntered(MouseEvent e){} public void mouseExited(MouseEvent e){} public void mouseDragged(MouseEvent e){} public void mouseMoved(MouseEvent e){} } }
2004-10-29
畫圓小程式 by shumi
程式碼~
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言