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

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

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

Здравствуйте. Мне была дана задача - сделать кнопку, которая будет перемещаться в случайную точку экрана, при наведении на нее курсора, так, чтобы ее невозможно было поймать... Я знаю, скорей всего это очень простая задача, но моей головы совершенно не хватет додумать, либо это незнание методов, либо просто пустота в голове)) Помогите пожалуйста. (Стаж = 1 мес (почти))
Листинг программы
  1. import javax.imageio.ImageIO;
  2. import javax.swing.*;
  3. import java.awt.*;
  4. import java.awt.event.ActionEvent;
  5. import java.awt.event.MouseEvent;
  6. import java.awt.event.MouseListener;
  7. import java.awt.event.MouseMotionListener;
  8. import java.io.File;
  9. import java.io.IOException;
  10. public class rand0m {
  11. public static void main(String[] args) {
  12. Fr fr = new Fr();
  13. fr.setVisible(true);
  14. }
  15. }
  16. class Fr extends JFrame implements MouseMotionListener {
  17. int a = (int) ( Math.random() * 1920 );
  18. int c = (int) ( Math.random() * 1920 );
  19. private int wWidth, wHeight;
  20. Toolkit tk = Toolkit.getDefaultToolkit();
  21. Dimension dm = tk.getScreenSize();
  22. JLabel lbl;
  23. JButton b;
  24. public Fr(){
  25. setTitle("Window");
  26. setDefaultCloseOperation(EXIT_ON_CLOSE);
  27. setBounds(0, 0, dm.width, dm.height);
  28. this.setMinimumSize(dm);
  29. this.setMaximumSize(dm);
  30. this.requestFocus();
  31. this.setFocusable(true);
  32. this.toFront();
  33. wWidth = dm.width;
  34. wHeight = dm.height;
  35. setResizable(false);
  36. setContentPane(new BgPanel());
  37. Container cont = getContentPane();
  38.  
  39. lbl = new JLabel("Label");
  40. lbl.setFont(new Font("Arial", Font.BOLD, 24));
  41. b = new JButton("Button");
  42. b.setBounds(800,50,200,70);
  43. cont.setLayout(null);
  44. cont.add(lbl);
  45. cont.add(b);
  46. }
  47. @Override
  48. public void mouseDragged(MouseEvent e) {
  49. // TODO Автоматически созданная заглушка метода
  50. }
  51. @Override
  52. public void mouseMoved(MouseEvent e) {
  53. if(mouseMoved(null, getX(), getY())) {
  54. }
  55. b.setBounds(a,c,200,70);
  56. }
  57. }
  58. class BgPanel extends JPanel{
  59. public void paintComponent(Graphics g){
  60. Image im = null;
  61. try {
  62. im = ImageIO.read(new File("Untitled-1.jpg"));
  63. } catch (IOException e) {}
  64. g.drawImage(im, 0, 0, null);
  65. }
  66. }

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

textual
Листинг программы
  1. import javax.imageio.ImageIO;
  2. import javax.swing.*;
  3. import java.awt.*;
  4. import java.awt.event.MouseAdapter;
  5. import java.awt.event.MouseEvent;
  6. import java.io.File;
  7. import java.io.IOException;
  8.  
  9. public class RandomButton {
  10.     public static void main(String[] args) {
  11.  
  12.         Fr fr = new Fr();
  13.         fr.setVisible(true);
  14.     }
  15.  
  16. }
  17.  
  18. class Fr extends JFrame  {
  19.     int a;
  20.     int c;
  21.     private int wWidth, wHeight;
  22.     Toolkit tk = Toolkit.getDefaultToolkit();
  23.     Dimension dm = tk.getScreenSize();
  24.     JLabel lbl;
  25.     JButton b;
  26.  
  27.     private class ML extends MouseAdapter {
  28.  
  29.         @Override
  30.         public void mouseEntered(MouseEvent e) {
  31.             a = (int) (Math.random() * (dm.getWidth()-2*b.getWidth())+b.getWidth());
  32.             c = (int) (Math.random() * (dm.getHeight()-2*b.getHeight())+b.getHeight());
  33.             a = (int) (dm.getWidth()-b.getWidth());
  34.             c = (int) (dm.getHeight()-2*b.getHeight());
  35.             a = (int) (Math.random()*(dm.getWidth()-b.getWidth()-50))+(25);
  36.             c = (int) (Math.random()*(dm.getHeight()-b.getHeight()-75))+(25);
  37.             b.setBounds(a,c,b.getWidth(),b.getHeight());
  38.             repaint();
  39.         }
  40.     }
  41.  
  42.  
  43.     public Fr() {
  44.         setTitle("Window");
  45.         setDefaultCloseOperation(EXIT_ON_CLOSE);
  46.         dm = new Dimension((int)dm.getWidth()/2,(int)dm.height/2);
  47.         setBounds(0, 0, dm.width/2, dm.height/2);  // half screen
  48.         this.setMinimumSize(dm);
  49.         this.setMaximumSize(dm);
  50.         this.requestFocus();
  51.         this.setFocusable(true);
  52.         this.toFront();
  53.         wWidth = dm.width;
  54.         wHeight = dm.height;
  55.         setResizable(false);
  56.         setContentPane(new BgPanel());
  57.         Container cont = getContentPane();
  58.  
  59.  
  60.         lbl = new JLabel("Label");
  61.         lbl.setFont(new Font("Arial", Font.BOLD, 24));
  62.         b = new JButton("Button");
  63.         b.setBounds((int)(dm.width/2+dm.width/4), (int)(dm.height/2+dm.height/4), 200, 70);
  64.  
  65.         b.addMouseListener(new ML());
  66.         cont.setLayout(null);
  67.         cont.add(lbl);
  68.         cont.add(b);
  69.     }
  70.  
  71.  
  72. }
  73.  
  74. class BgPanel extends JPanel {
  75.     public void paintComponent(Graphics g) {
  76.         Image im = null;
  77.         try {
  78.             im = ImageIO.read(new File("Untitled-1.jpg"));
  79.         } catch (IOException e) {
  80.         }
  81.         g.drawImage(im, 0, 0, null);
  82.  
  83.     }
  84. }

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


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

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

10   голосов , оценка 3.9 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы