Java按钮不工作

Java按钮不工作,java,button,action,applet,Java,Button,Action,Applet,按钮正在触发事件,但未显示。它会创建新的圆,但不会绘制新的圆。有什么我没做的吗?(第一个java小程序)。我可能错过了一些愚蠢的东西 import java.applet.*; public class CircleApp extends Applet { public circle[] circles; public Button regen; public CircleApp(){ } publ

按钮正在触发事件,但未显示。它会创建新的圆,但不会绘制新的圆。有什么我没做的吗?(第一个java小程序)。我可能错过了一些愚蠢的东西

import java.applet.*;


    public class CircleApp extends Applet {

        public circle[] circles;
        public Button regen;

        public CircleApp(){
        }

        public void init()
        {
            this.setSize(400, 400);
            genCircles(getWidth(), getHeight());
            regen = new Button("New Circles");
            add(regen);
        }

        public boolean action(Event e, Object args)
        {
            genCircles(getWidth(), getHeight());
            return true;
        }

        public void genCircles(int wid, int hei)
        {
            circles = new circle[20];
            Random gen = new Random();
            for (int i = 0; i < 20; i++)
            {
                int x = gen.nextInt(wid);
                int y = gen.nextInt(hei);
                int rx = Math.min(x, wid - x);
                int ry = Math.min(y, hei - y);
                int r = Math.min(rx, ry);

                circles[i] = new circle(new Point(x, y), gen.nextInt(r));
            }

            for (int i = 0; i < 20; i++)
            {
                for (int j = i; j < 20; j++)
                {
                    if (circles[i].intersects(circles[j]))
                    {
                        circles[i].intersects = true;
                        break;
                    }
                }
            }
        }

        public void paint(Graphics g)
        {
            for (int i = 0; i < 20; i++)
            {
                g.setColor((circles[i].intersects) ? Color.blue : Color.magenta);
                g.drawOval(circles[i].location.x,
                        circles[i].location.y,
                        circles[i].radius,
                        circles[i].radius);
            }
        }
    }

import java.awt.Point;


public class circle {
    public Point location;
    public int radius;
    public boolean intersects;

    public circle(Point h, int radius)
    {
        this.location = h;
        this.radius = radius;
    }
    public circle()
    {
        this(new Point(0, 0), 1);
    }
    public boolean intersects(circle other)
    {
        return (this.location.distance(other.location) <
                (double)(this.radius + other.radius));
    }
}
import java.applet.*;
公共类CircleApp扩展小程序{
公众圈子[]圈子;
公共按钮再生;
公共CircleApp(){
}
公共void init()
{
这个。设置大小(400400);
genCircles(getWidth(),getHeight());
regen=新按钮(“新圆圈”);
添加(重新生成);
}
公共布尔操作(事件e,对象参数)
{
genCircles(getWidth(),getHeight());
返回true;
}
公共无效圆(int wid,int hei)
{
圆圈=新圆圈[20];
Random gen=新的Random();
对于(int i=0;i<20;i++)
{
int x=gen.nextInt(wid);
int y=gen.nextInt(hei);
int rx=数学最小值(x,wid-x);
int-ry=Math.min(y,hei-y);
int r=数学最小值(rx,ry);
圆[i]=新圆(新点(x,y),第二代(r));
}
对于(int i=0;i<20;i++)
{
对于(int j=i;j<20;j++)
{
if(圆[i]。与(圆[j])相交
{
圆[i]。相交=真;
打破
}
}
}
}
公共空间涂料(图g)
{
对于(int i=0;i<20;i++)
{
g、 setColor((圆圈[i]。相交)?Color.blue:Color.洋红);
g、 drawOval(圆[i]。位置.x,
圆[i].location.y,
圆[i]。半径,
圆[i].半径);
}
}
}
导入java.awt.Point;
公共阶级圈子{
公共点位置;
公共整数半径;
公共布尔交叉;
公共圆(h点,整数半径)
{
这个位置=h;
这个半径=半径;
}
公众圈()
{
这(新的点(0,0,1);
}
公共布尔相交(圆圈其他)
{
返回(this.location.distance(other.location)<
(双)(本半径+其他半径);
}
}

谢谢你的帮助

我看不出您在哪里向按钮添加了ActionListener,如果没有它,按钮将无法将其按下与任何代码操作相关联。也许我错过了什么。。。请告诉我当按下一个按钮时会发生什么,是什么代码为您调用的


如果可能的话,我建议您不要使用AWT编码,而是使用更健壮和灵活的Swing编码。与AWT相比,这里和其他网站上有更多的教程和更多的专业知识。

我看不出您在哪里向按钮添加了ActionListener,没有它,按钮将无法将其按下与任何代码操作关联。也许我错过了什么。。。请告诉我当按下一个按钮时会发生什么,是什么代码为您调用的

如果可能的话,我建议您不要使用AWT编码,而是使用更健壮和灵活的Swing编码。此外,与AWT相比,这里和其他网站上有更多的it教程和更多的it专业知识。

您需要在生成新圆圈后调用以重新绘制它们

另外,与您的问题没有直接关系,但不推荐使用--请改用按钮上的。

您需要在生成新圆圈后调用重新绘制新圆圈


此外,与您的问题没有直接关系,但已被弃用--请使用按钮上的。

+1,建议使用Swing。AWT和Swing的绘画技巧不同,海报上的时间最好花在学习Swing技巧上。+1,建议使用Swing。AWT和Swing的绘画技巧是不同的,海报上的时间最好花在学习Swing技巧上。