【问题标题】:How to select a shape on a drawing panel?如何在绘图面板上选择形状?
【发布时间】:2011-12-04 05:47:23
【问题描述】:

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

好的,我试过了,效果不错。除了,我可以选择多个形状,并且在我更改单选按钮执行其他操作之前,显示其选择的边框不会出现在形状周围。然后出现选择。我不知道如何解决这个问题?我尝试添加一个布尔值来修复能够选择多个形状的问题,但它不起作用。 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;
        }

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢!!我会试一试。
    • @Susie:不客气。如果您遇到任何这些步骤,请回来。
    • 我很感激!我确实有点卡住了……我遇到了两个我不太了解的问题。直到我更改单选按钮并向画布添加其他内容之后,该形状才会显示它已被选中......即使添加了布尔值,它也会选择多个形状。
    • 你是从你的 MouseListener 代码中调用repaint() 吗?否则,如果没有更多代码,就很难知道出了什么问题。
    • 我还没有实现拖动....只是这个选择代码在鼠标按下。我忘记了重新绘制,现在在将布尔值更改为 true 后调用它......但由于某种原因它仍然无法正常工作。我必须单击一个不同的单选按钮,然后才会出现选择。
    猜你喜欢
    • 2019-07-15
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    • 2012-12-15
    相关资源
    最近更新 更多