Передвижение "лифта" - 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();
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д