Передвижение "лифта" - Java

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

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

Здравствуйте. Нужно реализовать движение лифта (квадрата). Пользователю на выбор предлагают 4 действия: открыть дверь, закрыть дверь, вверх и вниз. Если дверь лифта закрыта, и пользователь нажал вверх то должна появиться анимация как квадратик движется на вверх и наоборот. Здесь реализовано меню.
Листинг программы
  1. import javax.swing.*;
  2. import java.awt.GridLayout;
  3. public class Autom {
  4. JPanel windowContent= new JPanel();
  5.  
  6. JButton button1 = new JButton("Открыть дверь");
  7. JButton button2 = new JButton("Закрыть дверь");
  8. JButton button3 = new JButton("Вверх");
  9. JButton button4 = new JButton("Вниз");
  10. Autom(){
  11. GridLayout gl = new GridLayout(2,2);
  12. windowContent.setLayout(gl);
  13. windowContent.add(button1);
  14. windowContent.add(button2);
  15. windowContent.add(button3);
  16. windowContent.add(button4);
  17.  
  18. // Создаём фрейм и задаём для него панель
  19. JFrame frame = new JFrame("Elevator");
  20. frame.setContentPane(windowContent);
  21. frame.setSize(400,100);
  22. frame.setVisible(true);
  23. ElevatorEngine elevatorEngine = new ElevatorEngine(this);
  24. button1.addActionListener(elevatorEngine);
  25. button2.addActionListener(elevatorEngine);
  26. button3.addActionListener(elevatorEngine);
  27. button4.addActionListener(elevatorEngine);
  28. }
  29. public static void main(String[] args) {
  30. Autom Elev = new Autom();
  31. }
  32. }
Здесь хотел реализовать слушателей
Листинг программы
  1. import java.awt.event.ActionListener;
  2. import java.awt.event.ActionEvent;
  3. import javax.swing.JButton;
  4. public class ElevatorEngine implements ActionListener{
  5.  
  6. Autom parent;
  7. boolean door = false;
  8. boolean up = false;
  9. ElevatorEngine(Autom parent){
  10. this.parent = parent;
  11. }
  12. public void actionPerformed(ActionEvent e){
  13. JButton clickedButton = (JButton) e.getSource();
  14.  
  15. Object src = e.getSource();
  16. //Пользователь открыл дверь
  17. if (src == parent.button1){
  18. door = false;
  19. }
  20. //Пользователь закрыл дверь
  21. else if (src == parent.button2){
  22. door = true;
  23. }
  24. //Пользователь нажал вверх
  25. else if (src == parent.button3){
  26. if(up!=true&&door)
  27. {up = true;}
  28. }
  29. //Пользователь нажал вниз
  30. else if (src == parent.button4){
  31. if(up&&door)
  32. {
  33. up = false;}
  34. }
  35. }}
Скажите, как сделать, чтобы при нажатии на вверх, появлялся квадрат, который движется вверх?

Решение задачи: «Передвижение "лифта"»

textual
Листинг программы
  1. import java.awt.event.ActionListener;
  2. import java.awt.Color;
  3. import java.awt.Graphics;
  4. import java.awt.event.ActionEvent;
  5. import javax.swing.JButton;
  6. import javax.swing.JFrame;
  7. import javax.swing.JLabel;
  8. import javax.swing.JPanel;
  9.  
  10. public class ElevatorEngine extends JPanel implements ActionListener, Runnable{
  11.     int a=0,b=100;
  12.     public void paintComponent(Graphics g){
  13.         super.paintComponent(g);
  14.         g.setColor(Color.GREEN);
  15.         g.fillRect(a,b,50,50);
  16.        
  17.     }
  18. Autom parent;
  19. boolean door = false;
  20. boolean up = false;
  21. ElevatorEngine(Autom parent){  
  22. this.parent = parent;
  23. }
  24.  
  25. public void actionPerformed(ActionEvent e){
  26. JButton clickedButton = (JButton) e.getSource();
  27.  
  28.  
  29. Object src = e.getSource();
  30. //Пользователь открыл дверь
  31. if (src == parent.button1){
  32.     door = false;
  33. }
  34. //Пользователь закрыл дверь
  35. else if (src == parent.button2){
  36.     door = true;
  37.  
  38. }
  39. //Пользователь нажал вверх
  40. else if (src == parent.button3){
  41.    
  42. if(up!=true&&door)
  43. {
  44.     Thread worker = new Thread(this);
  45.     worker.start();
  46.    
  47.     up = true;}
  48. }
  49. //Пользователь нажал вниз
  50. else if (src == parent.button4){
  51.     if(up&&door)
  52.     {
  53.        
  54.     up = false;}
  55.  
  56. }
  57. }
  58.  
  59.  
  60. public void run() {
  61.     try {
  62.         Thread.sleep(5000);
  63.     } catch (InterruptedException es) {
  64.         // TODO Auto-generated catch block
  65.         es.printStackTrace();
  66.     }
  67.     JFrame f = new JFrame("Elevator1");
  68.     f.add(this);
  69.     f.setSize(300,200);
  70.     f.setVisible(true);
  71.    
  72.     for(int i = 0;i<99;i++)
  73.     {b--;repaint();
  74.     }
  75.    
  76.    
  77.     }
  78. }

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


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

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

7   голосов , оценка 4 из 5

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

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

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