可点击的目标

问题描述

因此,我正在尝试为班级的期末项目制作游戏副本 (http://www.aimbooster.com/),但我一生都无法思考如何制定目标。我尝试了一个绘制组件,但无法单击绘制组件。有没有人有一些想法?这是我的代码

package Final_Project;

import javax.swing.JFrame;

public class aimFrame
{

    public static void main(String[] args)
    {
        {
            JFrame frame = new JFrame("aim Booster");
            frame.setDefaultCloSEOperation(3);
            frame.getContentPane().add (new aimPanel(600,600));
            frame.pack();
            frame.setVisible(true);
        }
    }
}

主要代码

package Final_Project;

import java.awt.*;

import java.awt.event.*;
import java.util.ArrayList;

import javax.swing.*;

public class aimPanel extends JPanel
{
    private int width,height;
    
    private int px,py,pw,ph;
    private Timer circletimer;
    private Timer targettimer;
    
    private ArrayList<Point> circles;
    private ArrayList<Point> targets;

    public aimPanel(int width,int height)
    {
        this.width = width;
        this.height = height;
        this.setPreferredSize(new Dimension(width,height));
        this.setBackground(Color.gray);
        
        px = 0;
        py = 0;
        pw = ph = 50;
        
        this.addMouseListener(new ClickListener());
        
        circles = new ArrayList<Point>();
        circletimer = new Timer (3000,new circlelistener());
        targettimer = new Timer (5000,new circlelistener());
        
        targets = new ArrayList<Point>();
    }
    
    public void paintComponent(Graphics g)
    {
        super.paintComponent(g);
        g.setColor(Color.black);
        
        for(int i = 0; i < circles.size(); i++)
        {
            g.filloval(circles.get(i).x,circles.get(i).y - 10,10,10);
        }

        super.paintComponent(g);
        g.setColor(Color.orange);
        
        for(int i = 0; i < targets.size(); i++)
        {
            g.fillRect(targets.get(i).x,targets.get(i).y -50,50,50);
        }
    }
    
    private class ClickListener implements MouseListener
    {

        @Override
        public void mouseClicked(MouseEvent e)
        {
        }

        @Override
        public void mousepressed(MouseEvent e)
        {
    System.out.println("Clicked");
            
            //add points to circle list
            circles.add(new Point(e.getX(),e.getY()));
            circletimer.start();
            
            repaint();
        }

        @Override
        public void mouseReleased(MouseEvent e)
        {
        }

        @Override
        public void mouseEntered(MouseEvent e)
        {
        }

        @Override
        public void mouseExited(MouseEvent e)
        {
        }
    }
    
    private class circlelistener implements ActionListener
    {

        @Override
        public void actionPerformed(ActionEvent e)
        {
            if (circles.size()>0)
                circles.remove(0);
            repaint();
            
        }
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)