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