Передвижение "лифта" - 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();
    }
    
    
    }
}

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


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

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

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