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