估计的画出虚线(实线估计也行),然后根据鼠标按下和抬起的位置,判断里面选中的控件.java不是很熟悉,有现成的例子没?

解决方案 »

  1.   

    干吗要计算鼠标位置
    既然是控件 它自己没Mouse事件?
      

  2.   

    单个选中已经实现了,想做成选择文件夹那样,画个框多选.鼠标按下,抬起事件实现起来没问题,就是画线不太会.
    因为需要在鼠标拖拽的时候把原来的线去掉,然后再画新线.java中画虚线要怎么画?如何能把刚才画的虚线去掉呢?
      

  3.   

    java.awt 
    类 Graphics
    java.lang.Object
      java.awt.GraphicssetXORMode
    public abstract void setXORMode(Color c1)将此图形上下文的绘图模式设置为在此图形上下文的当前颜色和新的指定颜色之间交替。这指定了逻辑像素操作以 XOR 模式执行,在此模式中像素在当前颜色和指定的 XOR 颜色之间进行交替。 
    当执行绘制操作时,当前颜色的像素更改为指定的颜色,反之亦然。 这两种颜色以外的像素以不可预测但可逆的方式更改;如果相同的图形被绘制两次,则所有像素恢复到原始值。 
    参数:
    c1 - XOR 交替颜色
      

  4.   

    没找到现成的.按自己的想法写了一个.用insiku 提示的方法擦掉最后画出来的框. 有个问题就是用 drawRect 画出来的是实线,不知道怎么才能画出虚线框?
        /**
         * 画Rect,这个方法要在画布的paint方法中调用.
         * @param g
         */
        public void paintRect(Graphics g) {
            if(rectDash!=null) {
                g.setColor(rectColor);
                g.drawRect(rectDash.x, rectDash.y, rectDash.width, rectDash.height);
            }
        }
        
        /**
         * 取消上一次画的Rect,这个方法要在画布的paint方法中调用.
         * @param g
         */
        public void paintRectXor(Graphics g) {
            if(rectDash!=null) {
                g.setColor(rectColor);
                g.setXORMode(g.getColor());
                g.drawRect(rectDash.x, rectDash.y, rectDash.width, rectDash.height);
            }
        }
      

  5.   

    回5楼:
    绘制前设置Stroke
    ((Graphics)g).setStroke(new BasicStroke(1, BasicStroke.CAP_BUTT, BasicStroke.JOIN_BEVEL, 1, new float[]{5, 5}, 0));
      

  6.   

    to:chenweionline 
    为什么我的没有setStroke这个方法呢?
      

  7.   

    是不是jar太老了?哪能下到新的?