作者pugboy ()
看板java
标题Re: [问题] 关於滑鼠事件MouseEvent的问题.(已解决)
时间Thu Feb 21 11:34:12 2013
※ 引述《pugboy ()》之铭言:
: 我的程式码如下,执行起来就是有种说不上来的怪...
: 就是可以拖曳,但是只要滑鼠停下来(左键依然按住)我的矩形就会消失...
: 所以我想请问大大们除了
: 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(
你的程式在你每次按下、拖曳、放开时都会划一次矩形,再来就是拖曳的时候你写了
repaint(),自然视窗上所画的东西就会消失。
关於解决方式,就算把 repaint() 放在前面也行不通,repaint() 会等待事件结束之後
才会 call paint(Graphics),如果我的想法没错的话。所以你可以直接 call
paint(Graphics) 来重画,放在画矩形的动作之前。
@Override
public void mouseDragged(MouseEvent e) {
Point p = e.getPoint();
Graphics2D g2 = (Graphics2D) getGraphics();
paint(getGraphics()); //add
g2.setPaint(Color.red);
g2.fill(new Rectangle2D.Double(p1.x, p1.y, 80, 80));
}
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.115.176.43
1F:推 PsMonkey:这是... 人格分裂? 02/21 11:40
2F:→ superlubu:推人格分裂 XDD 02/21 15:18
3F:推 gmoz:"昨日种种譬如昨日死 今日种种譬如今日生" 吗XDD 02/21 15:36
4F:推 vi000246:能转笨板吗XD 02/21 15:41
5F:推 polola6212:其实是时空胶囊~ 02/21 17:05
6F:推 greengrams:刚纳闷版名就看到了 推~ XD 02/22 12:42
7F:推 No:XDDD 02/22 14:05
8F:推 swpoker:好像大陆有个人回了2年前自己的文 02/22 17:15