想做个windows自带的画图那样的程序,请问如何做一个按钮,点击它之后通过拖动鼠标就可以画出一个圆形或者矩形来?由于刚开始学swing,所以连API都不知道该查哪个类,请有经验的提示一下吧。

解决方案 »

  1.   

    我记得在一本书上有,今天刚看,忘记了。java.awt    Graphics 是画图形的
      

  2.   

    看java.awt 下的吧。。窗体啊,jframe,jtable,都忘了,你看一下
      

  3.   

    鼠标事件加 Graphics 貌似可以搞定
      

  4.   

    以前 写过的一个 gui 你看一下:  要导入
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;  JButton b2 = new JButton("确定");
      b2.addMouseListener(new LandListener());  private class LandListener extends MouseAdapter{ public void mousePressed(MouseEvent e) {
    // TODO 你要的实现。。
    }

    }
     
      
    给你部分代码,你看一下就知道怎么写了。。
      

  5.   

    第一肯定要想到鼠标事件;第二那还不就是要获得到鼠标的位置;第三找到话题对象那个方法是画圆或是画长方形的;你根据这个思路你去参看api看一下了!希望能对于你有帮助!
      

  6.   

    要继承paintComponent()这个方法,然后实现MouseListener这个接口,处理完一个事件时注意repaint()
      

  7.   


    //只贴了响应mouse的代码,主要是响应mouseDraged消息,在拖动时不断绘画,刷新,鼠标释放时
    //响应release消息,把最后一个绘制的图形保存进绘图链表中,调用repaint刷新.
    //这样的话会有类似橡皮筋的效果..
    //代码中的graphicsItem是自定义的保存所绘图形信息的类//如果lz不要求保存画的图形,那就是在mouseDraged()中刷新,绘图,mouseRelease中把再绘制一次就形
    public void paintComponent(Graphics g)
    {
    super.paintComponent(g);// 必须调用才能有背景色
    Graphics2D g2D = (Graphics2D) g; for (graphicsItem e : paintList)
    {
    e.drawMyself(g2D);
    }}
    addMouseListener(new MouseAdapter()
    {
    public void mouseReleased(MouseEvent e)
    {
    if (!SwingUtilities.isRightMouseButton(e))
    {
    EndX = e.getX();
    EndY = e.getY();
    //所绘图形保存入ArrayList paintList
    paintList.add(new graphicsItem(OriX, OriY,EndX, EndY, drawMode, lineColor,fillColor));
    repaint();
    }
    }
    });
    addMouseMotionListener(new MouseMotionAdapter()
    {
    public void mouseDragged(MouseEvent e)
    {
    if (!SwingUtilities.isRightMouseButton(e))
    {
    update(getGraphics());//刷新
    Graphics2D g2 = (Graphics2D) getGraphics();
    g2.setColor(lineColor);
    switch (drawMode)
    {
    case MODE_LINE:
    g2.draw(new Line2D.Double(OriX, OriY, e.getX(), e.getY()));
    break;
    case MODE_RECTANGLE:
    g2.draw(new Rectangle2D.Double(OriX, OriY, e.getX() - OriX,e.getY() - OriY));
    g2.setColor(fillColor);
    g2.fillRect(OriX + 1, OriY + 1, e.getX() - 1- OriX, e.getY() - 1 - OriY);
    break;
    case MODE_ELLIPSE:
    g2.draw(new Ellipse2D.Double(OriX, OriY, e.getX() - OriX, e.getY() - OriY));
    g2.setColor(fillColor);
    g2.fillArc(OriX, OriY,e.getX() - OriX, e.getY() - OriY, 0, 360);
    break;
    default:
    break;
    }
    }
    }
    });
      

  8.   

    Java API文档里面查swing吧,里面应该有的,像什么Graphics,awt什么的。
    几年没做了,都忘了·
      

  9.   

    Graphics 类里有个paint方法。可以达到你需要的哈。里面有方法画圆矩形等。慢慢琢磨吧~!