java - 单击鼠标移动一个圆圈

标签 java swing user-interface paint mouse-listeners

我真的是 Java 的新手,我需要一个圆圈在单击 JFrame 时围绕它移动,但圆圈必须获得随机坐标。到目前为止,每次单击此代码都会生成一个新圆圈,但所有其他圆圈也都保留在那里。我只需要一个圆圈就可以围绕框架移动。所以也许有人可以帮我一点点:)

这是我的代码:

public class test2 extends JFrame implements MouseListener {
int height, width;
public test2() {
    this.setTitle("Click");
    this.setSize(400,400);
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setVisible(true);
    addMouseListener(this);
    width = getSize().width;
    height = getSize().height;
}

public void paint (Graphics g) {
    setBackground (Color.red);
    g.setColor(Color.yellow);
    int a, b;
    a = -50 + (int)(Math.random()*(width+40));
    b = (int)(Math.random()*(height+20));
    g.fillOval(a, b, 130, 110);
}

    public void mouseClicked(MouseEvent e) {
    int a, b;
    a = -50 + (int)(Math.random()*(width+40));
    b = (int)(Math.random()*(height+20));
    repaint();
}

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

public static void main(String arg[]){

    new test2();
}

}

最佳答案

看看这是否有帮助,这里我在画圆之前用背景色填充了整个矩形。虽然效率不高,但达到目的

替换paint方法如下

public void paint (Graphics g) {
        setBackground (Color.red);
        g.setColor(Color.red);
        g.fillRect(0, 0, width, height);
        g.setColor(Color.yellow);
        int a, b;
        a = -50 + (int)(Math.random()*(width+40));
        b = (int)(Math.random()*(height+20));
        g.fillOval(a, b, 130, 110);
    }

关于java - 单击鼠标移动一个圆圈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12551143/

相关文章:

html - 网站反馈表上评论字段的合理字符限制?

java - JDK 中的 Rhino 有什么用?

java - JNA 中的 Oleacc dll 支持

java - JPA - 禁用 persistence.xml 的验证

java - 如何在禁用编辑的情况下选择 JTable 单元格中的文本?

c# - 如何在我的 UI 上放置着色器

java - (HBase) 错误 : JAVA_HOME is not set and Java could not be found

Java GUI应用程序,从列表<objects>加载数据到Jtable

swing - Switch 语句有问题吗?

c++ - 如何在 Qt 样式表中创建阴影?