Кнопка, перемещающаяся в случайное место на экране - 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);
}
}