本人想做一个绘图程序,主要功能是:自定义一些组件,比如“直线”、“方块”,供用户在画板上进行拖放、绘图。这些“直线”、“方块”不需要有缩放功能,只需提供所在位置的坐标即可。 
    本人找不到相关资料,在此请教达人!!

解决方案 »

  1.   

    都是触发事件(MouseClick,MouseMove etc.)后进行一些对应画图逻辑操作 
    比如拖放矩形 只要确定对角两点就可绘制 鼠标第一次点下即确定第一点 接着的拖放过程
    是一个不断擦除重绘的过程 直至鼠标松开定型 
      

  2.   

    只需提供所在位置的坐标即可。  
    是指用户提供坐标给程序,让程序在那个坐标开始画图,还是程序得到用户放图形的位置?如果是这两种的话,好像有个location(可能是postion)相关的功能吧
      

  3.   

    找不到资料?
      API里面可是有你要做的程序的所有关键方法.
         
      

  4.   

    多看一下java.awt.Graphics的Api,相信对你有帮助
      

  5.   

    希望可以提供帮助
    import javax.swing.JPanel;
    import java.util.ArrayList;
    import javax.swing.JButton;
    import java.awt.Graphics;
    import java.awt.Graphics2D;
    import java.awt.geom.GeneralPath;
    import java.awt.Point;
    import javax.swing.JFrame;public class TestPanel extends JPanel{
        boolean isStart = false;
        ArrayList points = new ArrayList();
        JButton button = new JButton("開始");    public TestPanel() {
        setLayout(new java.awt.BorderLayout());
        button.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
            buttonAction();
            }
        });
        add(button,java.awt.BorderLayout.NORTH);
        addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
            if(isStart)
                points.add(evt.getPoint());
            repaint();
            }
        });
        }    public void buttonAction(){
        isStart = true;
        this.points.clear();
        button.setText("清除");
        this.repaint();
        }    public void paint(Graphics g){
        super.paint(g);
        if(points.size()<2){
            return ;
        }
        Graphics2D g2d = (Graphics2D) g;
        GeneralPath path = new GeneralPath();
        Point p = (Point) points.get(0);
        path.moveTo((float)p.getX(),(float)p.getY());
        for(int i = 1; i<points.size();i++){
            p = (Point) points.get(i);
            path.lineTo((float)p.getX(),(float)p.getY());
        }
        g2d.draw(path);
        }    public static void main(String arg[]){
        JFrame frame = new JFrame();
        frame.setLayout(new java.awt.BorderLayout());
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.add(new TestPanel(),java.awt.BorderLayout.CENTER);
        frame.setSize(600,600);
        frame.setVisible(true);
        }}