- 注册时间
- 2004-8-29
- 最后登录
- 1970-1-1
|
发表于 2006-12-22 23:15:44
|
显示全部楼层
那好办,楼主看看这个代码是不是你想要的效果:- import java.awt.geom.*;
- import java.awt.*;
- import java.awt.event.*;
- import javax.swing.*;
- import java.util.*;
- /**
- *简单的画图程序
- *@author Eastsun
- *@version .1
- */
- public class DrawPanel extends JFrame{
- LinkedList<Shape> shapeList =new LinkedList<Shape>();
- Shape shape;
- Point start,end;
- final String[] type =new String[]{"Line","Rectangle","Ellipse"};
- JComboBox comboBox =new JComboBox(type);
- public DrawPanel(){
- super("DrawPanel");
- JPanel panel =new JPanel(){
- public void paintComponent(Graphics g){
- super.paintComponent(g);
- Graphics2D g2 =(Graphics2D)g;
- g2.setColor(Color.white);
- g2.fillRect(0,0,getWidth(),getHeight());
- g2.setColor(Color.black);
- for(Shape s:shapeList) g2.draw(s);
- g2.draw(shape);
- }
- };
- panel.addMouseListener(new MouseAdapter(){
- public void mousePressed(MouseEvent e){
- start =e.getPoint();
- }
- public void mouseReleased(MouseEvent e){
- shapeList.add(shape);
- }
- });
- panel.addMouseMotionListener(new MouseMotionAdapter(){
- public void mouseDragged(MouseEvent e){
- end =e.getPoint();
- Object select =comboBox.getSelectedItem();
- if(select.equals(type[0])) shape =new Line2D.Float(start,end);
- else{
- if(select.equals(type[1])) shape =new Rectangle();
- else shape =new Ellipse2D.Float();
- ((RectangularShape)shape).setFrameFromDiagonal(start,end);
- }
- repaint();
- }
- });
- panel.setPreferredSize(new Dimension(320,240));
- add(panel,BorderLayout.NORTH);
- shape =new Rectangle();
-
- add(comboBox,BorderLayout.SOUTH);
-
- pack();
- setResizable(false);
- setDefaultCloseOperation(EXIT_ON_CLOSE);
- setVisible(true);
-
- }
- public static void main(String[] args){
- new DrawPanel();
- }
- }
复制代码 |
|