我在尝试使用同一方法获取 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() 方法时,我将如何让绘制函数触发。我在这里尝试了这段代码,但它不起作用。
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
谢谢。
最佳答案
要请求 Swing 重新绘制您的小部件,您可以使用 repaint() 方法
,如下所示:
public void mousePressed(MouseEvent e) {
// do other stuff
repaint();
}
Swing 将尽快调用您的 paint
方法。
不建议在任何其他时间进行绘制(除了 Swing 调用 paint
方法时),包括您自己调用 paint
时,这通常会导致图形故障。
您尝试的解决方案告诉我,您对方法没有很好的理解,但这超出了这个问题的范围。
关于Java:如何将两个事件放在同一个方法中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27791854/