我在尝试使用相同方法获取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
感谢。
答案 0 :(得分:1)
要请求Swing重新绘制窗口小部件,您可以使用repaint() method
,如下所示:
public void mousePressed(MouseEvent e) {
// do other stuff
repaint();
}
Swing会尽快调用您的paint
方法。
不建议在任何其他时间绘画(除了Swing调用你的paint
方法时) - 包括自己调用paint
- 不建议这样做,并且经常导致图形故障。
您尝试的解决方案告诉我您对方法没有很好的理解,但这超出了本问题的范围。