我正在创建一个程序,我可以在绘图画布上绘制不同的形状。我想添加一个按钮,单击后,允许我选择一个形状,然后将其拖动/平移到画布上的其他位置。实现这个的基本概念是什么?当我点击形状来选择它时,我想以某种方式在它周围添加一个边框以显示它已被选中。
好的,我尝试了这个,它有点工作。除此之外,我能够选择多个形状,并且在我更改单选按钮以执行其他操作之前,显示其选定的边框不会出现在形状周围。然后出现选择。我不知道如何解决这个问题?我尝试添加一个布尔值来修复能够选择多个形状,但它不起作用。 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;
}
答案 0 :(得分:1)
将整个项目分解为小步骤,并单独和孤立地解决每个问题。首先弄清楚如何在几个形状中选择一个Shape。我通常通过将我的Shapes保存在ArrayList中,然后在MouseListener的mousePressed
方法中完成此操作,迭代列表并检查是否有任何Shape contains(...)
鼠标的Point。
对于拖动,您将使用MouseMotionListener(两个侦听器可以组合在一个扩展MouseAdapter的类中),然后在mouseDragged
方法中移动选定的形状。