【发布时间】:2015-12-17 21:15:59
【问题描述】:
以下是我的,我在一个类中有一个paintComponent方法,
public void paintComponent(Graphics g) {
g2.setPaint(Color.red);
g2.fillRect(100, 100, 50, 50);
}
我想让那个图形对象(上图)在第二类中跟随我的鼠标,但我不知道如何在我的第二类(下)中调用它,我写了一个第一类的构造函数,但我不知道不知道如何让它出现在我的框架上。附言 我将 mouseMotionListener 添加到我的框架中
public void mouseMoved(MouseEvent e) {
GOLDraw g1 = new GOLDraw();//default constructor from the first class
repaint();
}
请简单解释一下如何调用paintComponent方法,以及为什么(我会试着理解它,我对继承等不太了解)。可能是因为我是初学者而且我做错了,在阅读 api 和 google 几个小时后我什么也没找到。
public class GolPresets extends JComponent implements MouseMotionListener{
public GolPresets() {
}
@Override
public void mouseDragged(MouseEvent e) {
}
Point point;
@Override
public void mouseMoved(MouseEvent e){
point = e.getPoint();
}
public void paintComponent(Graphics g) {
g.drawRect(point.x, point.y, 100, 100);
}
public void GUI() {
JFrame frame = new JFrame("");
frame.setVisible(true);
frame.setSize(500, 500);
frame.add(new GolPresets());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new GolPresets());
frame.addMouseMotionListener(this);
}
public static void main(String[] args) {
GolPresets g = new GolPresets();
g.GUI();
}
}
【问题讨论】:
-
调用
repaint将在事件调度线程上安排一个“绘制”事件,该线程将通过一系列额外的方法调用调用您的paintComponent方法。请参阅Painting in AWT and Swing 和Performing Custom Painting 了解有关绘画工作原理的更多详细信息 -
到目前为止,您已经提供了一堆脱离上下文的代码,它们没有提供任何关于您正在做什么或如何产生问题的线索。考虑提供一个runnable example 来证明您的问题。这不是代码转储,而是您正在做的事情的一个例子,它突出了您遇到的问题。这将减少混乱并获得更好的响应
标签: java graphics2d mousemotionlistener