import java.awt.*; import java.awt.event.*; import java.awt.geom.*; import javax.swing.*; public class DrawCircle extends JApplet{ boolean drawable = false; public void init(){ super.init(); getContentPane().add(new DrawPanel(), BorderLayout.CENTER); Action drawAction = new DrawAction(); Action cancelAction = new CancelAction(); JPanel p = new JPanel(); p.add(new JButton(drawAction)); p.add(new JButton(cancelAction)); getContentPane().add(p, BorderLayout.NORTH); JMenu actionMenu = new JMenu("Action"); actionMenu.add(drawAction); actionMenu.add(cancelAction); JMenuBar menuBar = new JMenuBar(); menuBar.add(actionMenu); setJMenuBar(menuBar); } public static void main(String[] args){ JApplet applet = new DrawCircle(); JFrame frame = new JFrame("DrawCircle"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(applet); frame.setSize(500, 500); applet.init(); applet.start(); frame.setVisible(true); } class DrawAction extends AbstractAction{ public DrawAction(){ putValue(Action.NAME, "Draw"); putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("ctrl D")); } public void actionPerformed(ActionEvent e){ drawable = true; } } class CancelAction extends AbstractAction{ public CancelAction(){ putValue(Action.NAME, "Cancel"); putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke("ctrl C")); } public void actionPerformed(ActionEvent e){ drawable = 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(drawable){ if((p1 != null) | (p2 != null)){ 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){ if(drawable){ p1 = (Point2D)e.getPoint(); } } public void mouseReleased(MouseEvent e){ if(drawable){ 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 swanky
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言