2 つの質問があります。
[解決しよう] - Java では、マウス リスナーを使用して画像内を移動できます。ポインタがある場所に画像を正確に移動する代わりに、マウスをクリックして上に移動すると、画像が上に移動するようにするにはどうすればよいですか。マウス ポインターがある場所に画像をジャンプさせないでください。
[解決しよう] - エディターを作成しているので、移動できるウィンドウに複数の画像がある場合、2 つの画像が重なっている場合、どの画像を実際に移動する必要があるかをどのように検出すればよいですか。前の画像の代わりに画像の後ろに移動したい場合、またはその逆の場合はどうなりますか。ここで皆さんが行った最善の方法は何ですか。
これらの質問の両方に関連するコード
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
}
});
フィードバックをお待ちしております。
ありがとう。