用java编写一个程序,用鼠标移动一个圆
我试着在第一个小程序中编写它,它成功了,但我在画椭圆线之后使用了repaint()方法,它闪烁得太多,我看不见。请帮我修复它用java编写一个程序,用鼠标移动一个圆,java,applet,jframe,Java,Applet,Jframe,我试着在第一个小程序中编写它,它成功了,但我在画椭圆线之后使用了repaint()方法,它闪烁得太多,我看不见。请帮我修复它 import java.awt.event.*; import java.awt.*; import javax.swing.*; public class MouseEvents extends JFrame implements MouseListener, MouseMotionListener { JFrame frame; public st
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
public class MouseEvents extends JFrame implements MouseListener, MouseMotionListener {
JFrame frame;
public static void main(String args[]){
MouseEvents obj=new MouseEvents();
obj.go();
}
public void go(){
frame=new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300,300);
frame.setVisible(true);
addMouseListener(this);
addMouseMotionListener(this);
}
public void mouseClicked(MouseEvent me) {
}
public void mouseEntered(MouseEvent me) {
}
public void mouseExited(MouseEvent me) {
}
public void mousePressed(MouseEvent me) {
}
public void mouseReleased(MouseEvent me) {
}
public void mouseDragged(MouseEvent me) {
repaint();
}
public void mouseMoved(MouseEvent me) {
Graphics g=getGraphics();
g.drawOval(me.getX(), me.getY(), 30,30);
}
}
getGraphics
)。有关更多详细信息,请参阅和JPanel
扩展的类。为此,注册一个mousemotionlistener
来跟踪当前鼠标位置。覆盖它的paintComponent
以绘制鼠标移动的圆
public class CirclePane extends JPanel {
private Point p = new Point(100, 100);
public CirclePane() {
MouseAdapter mouseHandler = new MouseAdapter() {
@Override
public void mouseMoved(MouseEvent e) {
p = e.getPoint();
repaint();
}
};
addMouseMotionListener(mouseHandler);
}
@Override
public Dimension getPreferredSize() {
return new Dimension(200, 200);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g.create();
g2d.drawOval(p.x - 50, p.y - 50, 100, 100);
g2d.dispose();
}
}
将此添加到您的框架中
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
public class MouseEvents {
public static void main(String[] args) {
new MouseEvents();
}
public MouseEvents() {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
try {
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
} catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
ex.printStackTrace();
}
JFrame frame = new JFrame("Testing");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new CirclePane());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
}
你的程序太棒了,很抱歉我犯了糟糕的编程错误,我是新来的,我想学习代码,而不必去读太多的书。。非常感谢:)这些大书可以帮助你避免犯愚蠢的错误;)