作者carlcarl (carl)
看板java
标题Re: [问题] 设计移动多个图案
时间Fri May 7 03:21:55 2010
※ 引述《ericsoneva (嗯~)》之铭言:
: 想要设计目前frame上有一些图案
: 我可以点选frame的任何其中一个图案移来移去(有点类似拼图)
: 目前做法是利用
: public void mousePressed(MouseEvent e) {
: dx=e.getX()-posX; // 取得滑鼠按下之点与基准点x方向的距离
: dy=e.getY()-posY;
: }
: public void mouseDragged(MouseEvent e) {
: x=e.getX()-dx; // 取得拖曳时的基准点x座标
: y=e.getY()-dy; // 取得拖曳时的基准点y座标
: if(dx>0 && dx<100 && dy>0 && dy<120) // 如果指标落在正方形区域内
: {
: ttt1.setLocation(x,y);
: Graphics g = getGraphics();
: update(g);
: posX =x;
: posY =y;
: }
: }
: 滑鼠点下去後算基准点与滑鼠点的距离是否有落在图案上
: 判断为是点哪一张图
: 但是这种方法常常会误判 且图一多整个会乱掉
: 而且图如果重叠会被一起拉到
: if(dx>0 && dx<100 && dy>0 && dy<120) // 如果指标落在正方形区域内
: 且会因为图的大小而要更改区域的大小
: 不知道有没有好的方法可以用滑鼠去点选我想要移动的物件
: 谢谢
我的做法是把滑鼠事件都挂在每个图上
然後在处理的时候 利用mouse event getcomponent
就能得到那张图 接下来就直接对那张图做移动这样@@
进阶一点
不规则的图的话
就跟上面那篇讲的一样 图的元件要覆写掉contains
滑鼠用利用这个来确认元件的范围
我那时候是用area来凑形状 所以就先把area的形状做出来
然後直接return area的contains这样:)
至於上下的问题 好像有几种方法可以解决
直接用JLayeredPane来操作应该也可以
其他的作法老实说我也不会就是了XD
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.127.142.117
1F:→ ericsoneva:了解了 感谢^^ 05/16 18:32