[問題] 關於滑鼠事件MouseEvent的問題.

看板java作者時間13年前 (2013/02/16 06:06), 編輯推噓0(002)
留言2則, 1人參與, 最新討論串1/1
我的程式碼如下,執行起來就是有種說不上來的怪... 就是可以拖曳,但是只要滑鼠停下來(左鍵依然按住)我的矩形就會消失... 所以我想請問大大們除了 mousePressed = 按下時觸發 mouseDragged = 拖曳時觸發 mouseReleased = 放開時觸發 這些以外 有沒有"左鍵按住不放且滑鼠不動"的觸發寫法 我想要是有的話應該就可以改善我的這個程式惹 可以告訴我嗎 謝謝各位大大! /* * 此程式目的是在JFrame上畫一個矩形並且可以利用滑鼠事件方式拖曳 */ package Strive; import java.awt.*; import java.awt.geom.*; import javax.swing.*; import java.awt.event.*; class CDrawF extends JFrame { private Point p1; //宣告Point CDrawF() { addMouseListener(new CDraw()); addMouseMotionListener(new CDraw()); setTitle("拖曳矩形"); setLayout(null); setBounds(50, 50, 300, 200); setVisible(true); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } class CDraw extends MouseAdapter { //繼承MouseAdapter MouseAdapter public void mousePressed(MouseEvent e){ //滑鼠按下觸發畫出矩形 p1 = e.getPoint(); Graphics2D g2 = (Graphics2D) getGraphics(); g2.setPaint(Color.red); g2.fill(new Rectangle2D.Double(p1.x, p1.y, 80, 80)); } public void mouseDragged(MouseEvent e){ //滑鼠拖曳觸發畫出矩形 p1 = e.getPoint(); Graphics2D g2 = (Graphics2D) getGraphics(); g2.setPaint(Color.red); g2.fill(new Rectangle2D.Double(p1.x, p1.y, 80, 80)); repaint(); } public void mouseReleased(MouseEvent e){ //滑鼠放開觸發畫出矩形 p1 = e.getPoint(); Graphics2D g2 = (Graphics2D) getGraphics(); g2.setPaint(Color.red); g2.fill(new Rectangle2D.Double(p1.x, p1.y, 80, 80)); } } } public class Exercise { //Main進入點 public static void main(String[] args){ new CDrawF(); } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.136.245.189

02/16 10:13, , 1F
因為你使用 Graphics 的方式錯了。你的 paint method 呢?
02/16 10:13, 1F

02/16 10:15, , 2F
把座標存起來,去 paint 裡頭畫,問題就都解決了
02/16 10:15, 2F
文章代碼(AID): #1H7h5VVd (java)