請問JLabel可拖曳時可移動該物件至任意位置??? |
答題得分者是:neoart
|
lichun1228
一般會員 發表:16 回覆:17 積分:11 註冊:2003-12-14 發送簡訊給我 |
|
neoart
版主 發表:22 回覆:582 積分:425 註冊:2003-05-09 發送簡訊給我 |
|
lichun1228
一般會員 發表:16 回覆:17 積分:11 註冊:2003-12-14 發送簡訊給我 |
|
neoart
版主 發表:22 回覆:582 積分:425 註冊:2003-05-09 發送簡訊給我 |
引言: 為何我在移動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 發送簡訊給我 |
|
lichun1228
一般會員 發表:16 回覆:17 積分:11 註冊:2003-12-14 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |