作者pugboy ()
看板java
标题[问题] 关於滑鼠事件MouseEvent的问题.
时间Sat Feb 16 06:06:20 2013
我的程式码如下,执行起来就是有种说不上来的怪...
就是可以拖曳,但是只要滑鼠停下来(左键依然按住)我的矩形就会消失...
所以我想请问大大们除了
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
1F:→ tkcn:因为你使用 Graphics 的方式错了。你的 paint method 呢? 02/16 10:13
2F:→ tkcn:把座标存起来,去 paint 里头画,问题就都解决了 02/16 10:15