Кнопка, перемещающаяся в случайное место на экране - 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);
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д