2015-01-06 34 views
1

我在尝试使用同一方法获取mousePressed()鼠标事件和Java paint()图形时出现问题(我试图简化为代码尽可能多[Java 7+])。Java:如何将两个事件放在同一个方法中

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 

} 

我该如何去得到paint函数在每次mousePressed()方法执行时触发。我在这里试过这段代码,它不起作用。

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 

谢谢。

+0

在mousePressed中调用'repaint()'? – csmckelvey

+0

谢谢,重绘工作! – CosineWaves

+0

另外,作为一个附注,我认为通常的做法是重写'paintComponent'方法而不是'paint'。另外,不要忘记在你重写的任何方法中调用'super.repaint()'。 – csmckelvey

回答

1

要请求的Swing重画你的窗口小部件,你可以使用repaint() method,如:

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

    repaint(); 
} 

秋千会尽快打电话给你paint方法。

在任何其他时间进行绘画(除Swing调用您的paint方法外) - 包括自己调用paint - 不被推荐,并且通常会导致出现图形故障。

您的尝试解决方案告诉我,您对方法没有很好的理解,但这不在此问题的范围之内。

相关问题