線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3106
推到 Plurk!
推到 Facebook!

請問JLabel可拖曳時可移動該物件至任意位置???

答題得分者是:neoart
lichun1228
一般會員


發表:16
回覆:17
積分:11
註冊:2003-12-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-06-04 17:29:09 IP:218.164.xxx.xxx 未訂閱
請問如何使用JLabel(或其它)物件匯入圖片並執行程式後,滑鼠移至圖片上方時(不含邊框),按下滑鼠左鍵可拖曳時可移動該物件至任意位置???
neoart
版主


發表:22
回覆:582
積分:425
註冊:2003-05-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-06-04 17:58:59 IP:61.64.xxx.xxx 未訂閱
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=48776 請善用查詢功能,謝謝
lichun1228
一般會員


發表:16
回覆:17
積分:11
註冊:2003-12-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-06-07 02:22:27 IP:218.164.xxx.xxx 未訂閱
為何我在移動jLabel時 jLabel的位置座標都與我的e.getX()跟e.getY() 有一段差距??? 還有在拖異時 都會出現2張圖片 在那一閃一閃的????
neoart
版主


發表:22
回覆:582
積分:425
註冊:2003-05-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-06-07 08:12:52 IP:61.56.xxx.xxx 未訂閱
引言: 為何我在移動jLabel時 jLabel的位置座標都與我的e.getX()跟e.getY() 有一段差距??? 還有在拖異時 都會出現2張圖片 在那一閃一閃的????
以下是我的程式碼.
package testmsgani;    import java.awt.*;
import java.awt.event.*;
import javax.swing.*;    public class Frame1 extends JFrame {
  JPanel contentPane;
  JLabel jLabel1 = new JLabel();
  int x;
  int y;
  int mouseDownX=0,mouseDownY=0;
 
  //Construct the frame
  public Frame1() {
    enableEvents(AWTEvent.WINDOW_EVENT_MASK);
    try {
      jbInit();
    }
    catch(Exception e) {
      e.printStackTrace();
    }
  }      //Component initialization
  private void jbInit() throws Exception  {
   
    contentPane = (JPanel) this.getContentPane();
    jLabel1.setBorder(BorderFactory.createLineBorder(Color.black));
    jLabel1.setText("jLabel1");
    jLabel1.setBounds(new Rectangle(106, 72, 61, 41));
    jLabel1.addMouseListener(new Frame1_jLabel1_mouseAdapter(this));
    jLabel1.addMouseMotionListener(new Frame1_jLabel1_mouseMotionAdapter(this));
    contentPane.setLayout(null);
    this.setSize(new Dimension(400, 300));
    this.setTitle("Frame Title");
    contentPane.add(jLabel1, null);
    x=106;y=72;
   
  }      //Overridden so we can exit when window is closed
  protected void processWindowEvent(WindowEvent e) {
    super.processWindowEvent(e);
    if (e.getID() == WindowEvent.WINDOW_CLOSING) {
      System.exit(0);
    }
  }      void jLabel1_mouseDragged(MouseEvent e) {
    System.out.println("x:" e.getX() "  ,y:" e.getY());
    int x_offset=e.getX()-mouseDownX;
    int y_offset=e.getY()-mouseDownY;
    
    
    x =x_offset;
    y =y_offset;
    
    jLabel1.setLocation(x,y);
    
  
  }      void jLabel1_mousePressed(MouseEvent e) {
     mouseDownX= e.getX();
     mouseDownY=e.getY();
     
  }
}    class Frame1_jLabel1_mouseMotionAdapter extends java.awt.event.MouseMotionAdapter {
  Frame1 adaptee;      Frame1_jLabel1_mouseMotionAdapter(Frame1 adaptee) {
    this.adaptee = adaptee;
  }
  public void mouseDragged(MouseEvent e) {
    adaptee.jLabel1_mouseDragged(e);
  }
}    class Frame1_jLabel1_mouseAdapter extends java.awt.event.MouseAdapter {
  Frame1 adaptee;      Frame1_jLabel1_mouseAdapter(Frame1 adaptee) {
    this.adaptee = adaptee;
  }
  public void mousePressed(MouseEvent e) {
    adaptee.jLabel1_mousePressed(e);
  }
}
main函數(也就是呼叫new Frame1()....)的片段請自己加入
lichun1228
一般會員


發表:16
回覆:17
積分:11
註冊:2003-12-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-06-07 13:22:45 IP:218.164.xxx.xxx 未訂閱
真的好感謝你 我懂了^^
lichun1228
一般會員


發表:16
回覆:17
積分:11
註冊:2003-12-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-06-12 02:30:20 IP:218.164.xxx.xxx 未訂閱
另外還有個問題 要如何讓他旋轉??? 點到它後 可讓圖片做360度旋轉?
系統時間:2024-05-08 20:50:15
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!