我有两个问题要问你:
[已解决] - 在java中,我能够使用鼠标侦听器在图像中移动。如果我单击并向上移动鼠标,它只会向上移动图像,而不是将图像精确移动到指针所在的位置。不让图像跳转到我的鼠标指针所在的位置。
[已解决] - 由于我正在构建一个编辑器,如果窗口上有多个可以移动的图像,如果有两个重叠的图像,我如何检测我实际上应该移动哪个图像。如果我想将图像移到图像后面而不是前面,会发生什么情况,反之亦然。你们在这里做过的最好的方法是什么?
与这两个问题相关的一些代码
addMouseMotionListener(new MouseMotionListener() {
@Override
public void mouseMoved(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseDragged(MouseEvent arg0) {
// TODO Auto-generated method stub
//use this
if(curObj != null){
Point p = arg0.getPoint();
curObj.pos.x = p.x;
curObj.pos.y = p.y;
......
}
}
});
addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
//right now find the first one that contains the mouse.
//later we can make it so they have an option to pick on that overlaps.
Point p = arg0.getPoint();
SwingUtilities.convertPoint(Main.gui, p, instance);
....
//this is the code to detect which image to use
curObj = null;
for(int i = 0; i < objects.size(); i++){
StepObject obj = objects.get(i);
if(obj.isDraggable()){
if(p.x >= obj.pos.x && p.y >= obj.pos.y &&
p.x <= (obj.pos.x + obj.getWidth()) && p.y <= (obj.pos.y + obj.getHeight())){
curObj = obj;
break;
}
}
}
.....
}
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseClicked(MouseEvent arg0) {
// TODO Auto-generated method stub
}
});
如有任何反馈,我们将不胜感激。
Thanks.
我实际上正在使用Graphics
绘制图像。
这是一个用户界面问题,可以追溯到最早的、广泛使用的对象绘图程序 http://en.wikipedia.org/wiki/MacDraw。常见的方法是实现两个基本操作,使用户能够通过更改隐藏对象的渲染顺序来公开该对象:
- 后移:将所选内容向后移动一步z-order.
- 移到后面:将所选内容移到后面z-order.
通常包括这两个互补的操作:
- 向前移动:将所选内容向前移动一步z-order.
- 移到前面:将所选内容移到前面z-order.
GraphPanel https://sites.google.com/site/drjohnbmatthews/graphpanel说明了 Java 2D 中命中测试和处理多重选择的几种技术。它说明了更简单的情况,其中至少some对象的可见性。它的渲染顺序由一个简单的定义List<Node>
模型使用ArrayList
,这对于重新排序来说并不理想;考虑LinkedList
作为替代实施List
界面。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)