如何在绘图面板上选择形状?

时间:2011-12-04 05:47:24

标签: java swing graphics shape drag-and-drop

我正在创建一个程序,我可以在绘图画布上绘制不同的形状。我想添加一个按钮,单击后,允许我选择一个形状,然后将其拖动/平移到画布上的其他位置。实现这个的基本概念是什么?当我点击形状来选择它时,我想以某种方式在它周围添加一个边框以显示它已被选中。

好的,我尝试了这个,它有点工作。除此之外,我能够选择多个形状,并且在我更改单选按钮以执行其他操作之前,显示其选定的边框不会出现在形状周围。然后出现选择。我不知道如何解决这个问题?我尝试添加一个布尔值来修复能够选择多个形状,但它不起作用。 boolean isSelected最初设置为false。我不明白为什么鼠标单击时边框颜色/宽度不会自动出现。

    public void mousePressed(MouseEvent e) {
        if ((_buttonNumber == 0) || (isSelected)) {
            for(int i=0; i<_storedShapes.size(); i++) {
                _storedShapes.elementAt(i).contains(e.getPoint());
                _storedShapes.elementAt(i).setBorderWidth(10);
                _storedShapes.elementAt(i).setBorderColor(Color.BLACK);
                isSelected = true;
            }
        }
        else {
            isSelected = false;
        }

1 个答案:

答案 0 :(得分:1)

将整个项目分解为小步骤,并单独和孤立地解决每个问题。首先弄清楚如何在几个形状中选择一个Shape。我通常通过将我的Shapes保存在ArrayList中,然后在MouseListener的mousePressed方法中完成此操作,迭代列表并检查是否有任何Shape contains(...)鼠标的Point。

对于拖动,您将使用MouseMotionListener(两个侦听器可以组合在一个扩展MouseAdapter的类中),然后在mouseDragged方法中移动选定的形状。