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