Не могу перетащить круги, как пример в книге (Апплет) - PullRequest
0 голосов
/ 13 марта 2020

Итак, мой университет использует книгу Java программирование от анализа проблем до разработки программ Д.С. Малика (ISBN: 978-1-111-53053-2), и в одном из примеров я скопировал кодовое слово в слово. Он работает, но не работает так, как предполагалось. То, что вы должны сделать, это иметь возможность щелкать и перетаскивать круги, которые заполняют экран в апплете. Если кого-то интересует пример программирования, то его 12-10. Я предоставил код от затмения. Любая помощь приветствуется.

import javax.swing.*;
import java.awt.event.*;
import java.applet.*;
import java.awt.*;


public class FreeDrawApplet extends JApplet implements MouseMotionListener
{



    //instance variables
    ColorCircle[] myGraph;

    final int NUM_CIRCLES = 7;
    final int WIDTH = 400;
    final int HEIGHT = 400;



    public class ColorCircle
    {
        private int x;
        private int y;

        public void setx(int iNewX)
        {
            x = iNewX;
        }
        public void sety(int iNewY)
        {
            x = iNewY;
        }
        public void paint (Graphics g)
        {
            g.fillOval(x-10, y-10, 20, 20);
        }
        public boolean selected(int iXcoord, int iYcoord)
        {
            if ((iXcoord >= x-10) && (iXcoord <= x+10) && (iYcoord >= y-10) && (iYcoord <= y+10))
                return true;
            else
                return false;
        }

    }//end of public class circle

    public void init ()
    {
        addMouseMotionListener(this);
        myGraph = new ColorCircle[NUM_CIRCLES];

        for(int i = 0; i < NUM_CIRCLES; i++)
        {
            ColorCircle myVertex = new ColorCircle();

            myVertex.setx((int)(Math.random() * (WIDTH-50)));

            myVertex.sety((int)(Math.random() * (HEIGHT-100)));

            myGraph[i] = myVertex;
        }

        JOptionPane.showMessageDialog(null, "Try to drag any one of the colored circles ", "Information", JOptionPane.PLAIN_MESSAGE);
    }//end of method

    public void paint(Graphics g)
    {
        Color[] myColor = {Color.black, Color.red, Color.blue, Color.green, Color.cyan, Color.orange, Color.yellow};

        if(NUM_CIRCLES > 0)
            for(int i =0; i < NUM_CIRCLES; i++)
            {
                g.setColor(myColor[i]);
                myGraph[i].paint(g);
            }

    }//end of paint method

    public void mouseDragged(MouseEvent event)
    {
        int iX = event.getX();
        int iY = event.getY();

        for(int i = 0; i < NUM_CIRCLES; i++)
        {
            if(myGraph[i].selected(iX, iY))
            {
                myGraph[i].setx(iX);
                myGraph[i].sety(iY);
                break;
            }

        }

        repaint();
    }


    public void mouseMoved(MouseEvent p1)
    {
    }


}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...