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)
沒有留言:
張貼留言