java Paint() 自动执行?

标签 java

import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.event.*;
import java.awt.geom.*;
import java.util.*;

public class test extends JFrame implements ActionListener, MouseListener {

    private Vector<String> vlist = new Vector<String> ();
    private int mouseX, mouseY;
    Canvas c = new Canvas();

    public test () {
        setSize(400,400);
        addMouseListener(this);

    }

    public static void main(String[] args) {


        java.awt.EventQueue.invokeLater(new Runnable() {
              public void run() {
                    test frame = new test();
                    //frame.setBackground(Color.yellow); 
                    frame.setVisible(true);
              }
        });
    }

    public void actionPerformed(ActionEvent ae) {

    }

    @Override
    public void paint(Graphics g) {

        Shape circle = new Ellipse2D.Float(100f, 100f, 100f, 100f);
        Graphics2D ga = (Graphics2D)g;
        ga.draw(circle);

    }

    public void move() {

    }

    public void drawCircle(int x, int y) {

    }

    public void mouseClicked(MouseEvent e) {
        repaint();

    }

    public void mouseExited(MouseEvent e) {

    }

    public void mousePressed(MouseEvent e) {
        this.mouseX=e.getX();
        this.mouseY=e.getY();
    }

    public void mouseReleased(MouseEvent e) {

    }

    public void mouseEntered(MouseEvent e) {

    }
}

我想编写一个测试程序来学习java中的图形编程。运行上面的代码,会自动绘制圆圈。为什么paint()方法会自动执行?我单击鼠标时要创建的圆圈。

最佳答案

向类添加属性。

boolean draw;

包围 paint(...) 中的代码
if (draw) {
    // existing code
}

这将使程序仅在 draw 为 true 时才进行绘制。最初,它是假的,所以它不会绘制任何东西。单击鼠标时,值属性 draw 将为 true

public void mouseClicked(MouseEvent e) {
    draw = true;
    repaint();
}

关于java Paint() 自动执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8074898/

相关文章:

java - 如何在 yarn 中从主机名或节点ID到达节点标签?

java - 在 Maven 测试运行期间加载 XML 文件

catalina.sh 中设置的 JAVA_OPTS 不适用于 TOMCAT 私有(private)实例

Java:网络在重置时断开连接

java - 确定fx :id of a pressed button

java - webmail 字体和 Outlook 字体不同

java - 如果使用另一个包、类路径集,从 jar 文件运行 Java 程序将不起作用

java - 如何将 "driver"添加到 javax.comm? Java串口编程

java - 我如何在java中读取特定数据

java - (Java) JList 在程序启动时偶尔会显示空列表