Передвижение "лифта" - Java
Формулировка задачи:
Здравствуйте. Нужно реализовать движение лифта (квадрата). Пользователю на выбор предлагают 4 действия: открыть дверь, закрыть дверь, вверх и вниз. Если дверь лифта закрыта, и пользователь нажал вверх то должна появиться анимация как квадратик движется на вверх и наоборот.
Здесь реализовано меню.
Здесь хотел реализовать слушателей
Скажите, как сделать, чтобы при нажатии на вверх, появлялся квадрат, который движется вверх?
import javax.swing.*; import java.awt.GridLayout; public class Autom { JPanel windowContent= new JPanel(); JButton button1 = new JButton("Открыть дверь"); JButton button2 = new JButton("Закрыть дверь"); JButton button3 = new JButton("Вверх"); JButton button4 = new JButton("Вниз"); Autom(){ GridLayout gl = new GridLayout(2,2); windowContent.setLayout(gl); windowContent.add(button1); windowContent.add(button2); windowContent.add(button3); windowContent.add(button4); // Создаём фрейм и задаём для него панель JFrame frame = new JFrame("Elevator"); frame.setContentPane(windowContent); frame.setSize(400,100); frame.setVisible(true); ElevatorEngine elevatorEngine = new ElevatorEngine(this); button1.addActionListener(elevatorEngine); button2.addActionListener(elevatorEngine); button3.addActionListener(elevatorEngine); button4.addActionListener(elevatorEngine); } public static void main(String[] args) { Autom Elev = new Autom(); } }
import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import javax.swing.JButton; public class ElevatorEngine implements ActionListener{ Autom parent; boolean door = false; boolean up = false; ElevatorEngine(Autom parent){ this.parent = parent; } public void actionPerformed(ActionEvent e){ JButton clickedButton = (JButton) e.getSource(); Object src = e.getSource(); //Пользователь открыл дверь if (src == parent.button1){ door = false; } //Пользователь закрыл дверь else if (src == parent.button2){ door = true; } //Пользователь нажал вверх else if (src == parent.button3){ if(up!=true&&door) {up = true;} } //Пользователь нажал вниз else if (src == parent.button4){ if(up&&door) { up = false;} } }}
Решение задачи: «Передвижение "лифта"»
textual
Листинг программы
import java.awt.event.ActionListener; import java.awt.Color; import java.awt.Graphics; import java.awt.event.ActionEvent; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class ElevatorEngine extends JPanel implements ActionListener, Runnable{ int a=0,b=100; public void paintComponent(Graphics g){ super.paintComponent(g); g.setColor(Color.GREEN); g.fillRect(a,b,50,50); } Autom parent; boolean door = false; boolean up = false; ElevatorEngine(Autom parent){ this.parent = parent; } public void actionPerformed(ActionEvent e){ JButton clickedButton = (JButton) e.getSource(); Object src = e.getSource(); //Пользователь открыл дверь if (src == parent.button1){ door = false; } //Пользователь закрыл дверь else if (src == parent.button2){ door = true; } //Пользователь нажал вверх else if (src == parent.button3){ if(up!=true&&door) { Thread worker = new Thread(this); worker.start(); up = true;} } //Пользователь нажал вниз else if (src == parent.button4){ if(up&&door) { up = false;} } } public void run() { try { Thread.sleep(5000); } catch (InterruptedException es) { // TODO Auto-generated catch block es.printStackTrace(); } JFrame f = new JFrame("Elevator1"); f.add(this); f.setSize(300,200); f.setVisible(true); for(int i = 0;i<99;i++) {b--;repaint(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д