Re: [問題] 設計移動多個圖案
※ 引述《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
→
05/16 18:32, , 1F
05/16 18:32, 1F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):