Кнопка, перемещающаяся в случайное место на экране - Java

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Мне была дана задача - сделать кнопку, которая будет перемещаться в случайную точку экрана, при наведении на нее курсора, так, чтобы ее невозможно было поймать... Я знаю, скорей всего это очень простая задача, но моей головы совершенно не хватет додумать, либо это незнание методов, либо просто пустота в голове)) Помогите пожалуйста. (Стаж = 1 мес (почти))
import javax.imageio.ImageIO;
import javax.swing.*;
 
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.io.File;
import java.io.IOException;
public class rand0m {
    public static void main(String[] args) {
    
        Fr fr = new Fr();
         fr.setVisible(true);
    }
    
}
        class Fr extends JFrame implements  MouseMotionListener {
            int a = (int) ( Math.random() * 1920 );
            int c = (int) ( Math.random() * 1920 );
            private int wWidth, wHeight;
            Toolkit tk = Toolkit.getDefaultToolkit(); 
            Dimension dm = tk.getScreenSize(); 
            JLabel lbl;
            JButton b;
            public Fr(){
                setTitle("Window");
                setDefaultCloseOperation(EXIT_ON_CLOSE);
                setBounds(0, 0, dm.width, dm.height); 
                this.setMinimumSize(dm); 
                this.setMaximumSize(dm); 
                this.requestFocus(); 
                this.setFocusable(true); 
                this.toFront(); 
                wWidth = dm.width; 
                wHeight = dm.height; 
                setResizable(false); 
                setContentPane(new BgPanel());
                Container cont = getContentPane();

                lbl = new JLabel("Label");
                lbl.setFont(new Font("Arial", Font.BOLD, 24));
                b = new JButton("Button");
                b.setBounds(800,50,200,70);
                 
                cont.setLayout(null);
                cont.add(lbl);
                cont.add(b);
            }
            @Override
            public void mouseDragged(MouseEvent e) {
                // TODO Автоматически созданная заглушка метода
                
            }
            @Override
            public void mouseMoved(MouseEvent e) {
            if(mouseMoved(null, getX(), getY())) {
                
            }
                b.setBounds(a,c,200,70);
            } 
 
        }
 
        class BgPanel extends JPanel{
            public void paintComponent(Graphics g){
                Image im = null;
                try {
                    im = ImageIO.read(new File("Untitled-1.jpg"));
                } catch (IOException e) {}
                g.drawImage(im, 0, 0, null); 
                
            }
        }

Решение задачи: «Кнопка, перемещающаяся в случайное место на экране»

textual
Листинг программы
import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;
import java.io.IOException;
 
public class RandomButton {
    public static void main(String[] args) {
 
        Fr fr = new Fr();
        fr.setVisible(true);
    }
 
}
 
class Fr extends JFrame  {
    int a;
    int c;
    private int wWidth, wHeight;
    Toolkit tk = Toolkit.getDefaultToolkit();
    Dimension dm = tk.getScreenSize();
    JLabel lbl;
    JButton b;
 
    private class ML extends MouseAdapter {
 
        @Override
        public void mouseEntered(MouseEvent e) {
            a = (int) (Math.random() * (dm.getWidth()-2*b.getWidth())+b.getWidth());
            c = (int) (Math.random() * (dm.getHeight()-2*b.getHeight())+b.getHeight());
            a = (int) (dm.getWidth()-b.getWidth());
            c = (int) (dm.getHeight()-2*b.getHeight());
            a = (int) (Math.random()*(dm.getWidth()-b.getWidth()-50))+(25);
            c = (int) (Math.random()*(dm.getHeight()-b.getHeight()-75))+(25);
            b.setBounds(a,c,b.getWidth(),b.getHeight());
            repaint();
        }
    }
 
 
    public Fr() {
        setTitle("Window");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        dm = new Dimension((int)dm.getWidth()/2,(int)dm.height/2);
        setBounds(0, 0, dm.width/2, dm.height/2);  // half screen
        this.setMinimumSize(dm);
        this.setMaximumSize(dm);
        this.requestFocus();
        this.setFocusable(true);
        this.toFront();
        wWidth = dm.width;
        wHeight = dm.height;
        setResizable(false);
        setContentPane(new BgPanel());
        Container cont = getContentPane();
 
 
        lbl = new JLabel("Label");
        lbl.setFont(new Font("Arial", Font.BOLD, 24));
        b = new JButton("Button");
        b.setBounds((int)(dm.width/2+dm.width/4), (int)(dm.height/2+dm.height/4), 200, 70);
 
        b.addMouseListener(new ML());
        cont.setLayout(null);
        cont.add(lbl);
        cont.add(b);
    }
 
 
}
 
class BgPanel extends JPanel {
    public void paintComponent(Graphics g) {
        Image im = null;
        try {
            im = ImageIO.read(new File("Untitled-1.jpg"));
        } catch (IOException e) {
        }
        g.drawImage(im, 0, 0, null);
 
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.9 из 5
Похожие ответы