Java:如何将两个事件放在同一个方法中

时间:2015-01-06 03:55:19

标签: java

我在尝试使用相同方法获取mousePressed()鼠标事件和Java paint()图形时遇到问题(我尽可能地简化代码编写[Java 7+])

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.lang.Math.*;

public class JFrameClick extends JFrame implements MouseListener {
    public static void main(String args[]) {
    //Main method in here
    }

    public void paint(Graphics g){
    //handle Java 2 graphics 
    }

    public void mousePressed(MouseEvent e) {
    //Handle mouse press
    }

//Other methods here

}

每次执行mousePressed()方法时,如何让paint函数触发。我在这里试过这个代码并且它没有用。

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.lang.Math.*;

public class JFrameClick extends JFrame implements MouseListener {
   public static void main(String args[]) {
   //Main method in here
   }

   public void paint(Graphics g, MouseEvent e){
   mousePressed(e);
   //handle Java 2 graphics
   }

   public void mousePressed(MouseEvent e) {
   //Handle mouse press
   }

//Other methods here

}

//This doesn't work vice versa either

感谢。

1 个答案:

答案 0 :(得分:1)

要请求Swing重新绘制窗口小部件,您可以使用repaint() method,如下所示:

public void mousePressed(MouseEvent e) {
    // do other stuff

    repaint();
}

Swing会尽快调用您的paint方法。

不建议在任何其他时间绘画(除了Swing调用你的paint方法时) - 包括自己调用paint - 不建议这样做,并且经常导致图形故障。

您尝试的解决方案告诉我您对方法没有很好的理解,但这超出了本问题的范围。