gpt4 book ai didi

Java MouseListener图形实现

转载 作者:行者123 更新时间:2023-12-01 13:12:57 25 4
gpt4 key购买 nike

所以我试图在我的程序中实现一个鼠标监听器,我让鼠标监听器工作,但图形不行。我试图找到一种方法,每次在 JPANEL 上单击鼠标时都绘制一个蓝色圆圈,唯一的问题是我似乎无法很好地调用 Graphics(我试图将其命名为 g)。

    import java.awt.*;
import java.awt.event.*;

import javax.swing.JFrame;
import javax.swing.JPanel;



class moveItMon extends JPanel implements MouseListener{

public moveItMon() {
this.setPreferredSize(new Dimension(500, 500));
addMouseListener(this);
}

public void addNotify() {
super.addNotify();
requestFocus();
}

public void mouseClicked(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mousePressed(MouseEvent e){}
public void mouseReleased(MouseEvent e) {
movetehMon(e);
}

public void movetehMon(MouseEvent e){
int x = e.getX();
int y = e.getY();
System.out.println("(" + x + "," + y + ")");
paintMon(x,y);
}
public void paintMon( int x, int y){
Graphics g = new Graphics();
g.setColor(Color.WHITE);
g.clearRect(0,0,500,500);
g.setColor(Color.BLUE);
g.fillOval(x,y,20,20);
}

public static void main(String[] s) {
JFrame f = new JFrame("moveItMon");
f.getContentPane().add(new moveItMon());
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.pack();
f.setVisible(true);
}


}

最佳答案

Graphics g = new Graphics();不会起作用(我相信你知道),因为该类是抽象的。

Swing 中的自定义绘制是通过覆盖 paintComponent 来完成的从 JComponent 扩展的组件的(如 JPanel )并使用提供的 Graphics要绘制的上下文。

看看Performing Custom PaintingPainting in AWT and Swing了解更多详情

您还应该注意,绘画是一个破坏性的过程,这意味着每次 paintComponent被调用后,您需要更新您需要绘制的所有内容。

关于Java MouseListener图形实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22702302/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com