看板 java 關於我們 聯絡資訊
我的程式碼如下,執行起來就是有種說不上來的怪... 就是可以拖曳,但是只要滑鼠停下來(左鍵依然按住)我的矩形就會消失... 所以我想請問大大們除了 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
tkcn:因為你使用 Graphics 的方式錯了。你的 paint method 呢? 02/16 10:13
tkcn:把座標存起來,去 paint 裡頭畫,問題就都解決了 02/16 10:15