Hey, ich versuche gerade eine Aufzug Simulation hinzubekommen.
Bisher habe ich folgendes:
Gui:
und DrawPanel:
Mein Problem ist nun folgendes:
Ich möchte das der Aufzug animiert hochfährt und nicht einfach an der neuen Stelle angezeigt wird. Wie mach ich das ?!
Zweitens will ich auch noch ein Rechteck in den Aufzug malen, dass die Tür symbolisieren soll. Bei einem Halt in einem anderen Stock muss die Tür zu Beginn der Fahrt geschlossen und am Ende geöffnet werden, sprich ich muss dann das gemalte Rechteck immer kleiner werden lassen bzw immer größer werden lassen von der Breite her.
Also meine Frage:
Wie kann ich die Animierte Fahrt und das mit der Tür implementieren. Geht das gar nicht mit meinem Ansatz bisher, weil die Aufteilung, naja sagen wir mal suboptimal ist ?!
Danke für eure Hilfe !
Bisher habe ich folgendes:
Gui:
Java:
import javax.swing.JPanel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.BorderLayout;
import javax.swing.BorderFactory;
public class AufzugGui implements ActionListener {
JFrame f;
JButton moveE, move1, move2;
JPanel northPanel, southPanel,centerPanel;
JLabel stats;
DrawPanel p = new DrawPanel();
public static boolean b = false;
public static boolean b1 = false;
public static boolean b2 = false;
public AufzugGui() {
stats = new JLabel("Tür Zustand: ");
northPanel = new JPanel();
southPanel = new JPanel();
centerPanel = new DrawPanel();
centerPanel.setBorder (BorderFactory.createEtchedBorder());
moveE = new JButton("Erdgeschoss");
moveE.addActionListener(this);
moveE.setActionCommand("e");
move1 = new JButton("1.Stock");
move1.addActionListener(this);
move1.setActionCommand("1");
move2 = new JButton("2.Stock");
move2.addActionListener(this);
move2.setActionCommand("2");
northPanel.add(moveE);
northPanel.add(move1);
northPanel.add(move2);
southPanel.add(stats);
f = new JFrame("Aufzug-Demo");
f.setLayout(new BorderLayout());
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setSize(400,400);
f.add(northPanel,BorderLayout.NORTH);
f.add(southPanel,BorderLayout.SOUTH);
f.add(centerPanel,BorderLayout.CENTER);
f.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("e")) {
b = true;
centerPanel.repaint();
}
else if(e.getActionCommand().equals("1")) {
System.out.println("1.Stock");
b1 = true;
centerPanel.repaint();
}
else if(e.getActionCommand().equals("2")) {
System.out.println("2.Stock");
b2 = true;
centerPanel.repaint();
}
}
public static void main(String[] args) {
new AufzugGui();
}
}
und DrawPanel:
Java:
import javax.swing.*;
import java.awt.*;
public class DrawPanel extends JPanel {
public void paintComponent(Graphics g) {
super.paintComponent(g);
g.setColor(Color.GRAY);
g.fillRect(100,0,40,getHeight());
g.setColor(Color.GREEN);
if(AufzugGui.b) {
g.fillRect(103,235,35,75);
AufzugGui.b = false;
}
else if (AufzugGui.b1){
g.fillRect(103,110,35,75);
AufzugGui.b1 = false;
}
else if (AufzugGui.b2){
g.fillRect(103,20,35,75);
AufzugGui.b2 = false;
}
}
}
Mein Problem ist nun folgendes:
Ich möchte das der Aufzug animiert hochfährt und nicht einfach an der neuen Stelle angezeigt wird. Wie mach ich das ?!
Zweitens will ich auch noch ein Rechteck in den Aufzug malen, dass die Tür symbolisieren soll. Bei einem Halt in einem anderen Stock muss die Tür zu Beginn der Fahrt geschlossen und am Ende geöffnet werden, sprich ich muss dann das gemalte Rechteck immer kleiner werden lassen bzw immer größer werden lassen von der Breite her.
Also meine Frage:
Wie kann ich die Animierte Fahrt und das mit der Tür implementieren. Geht das gar nicht mit meinem Ansatz bisher, weil die Aufteilung, naja sagen wir mal suboptimal ist ?!
Danke für eure Hilfe !