Hallo zusammen,
im folgenden Programm läuft nach Druck auf einen Button ein Ball vom Rand des Fensters zur Mitte (2D Grafik). Es gibt 3 Button, jeder Button gibt eine andere Startposition vor.
Wird nun ein Durchlauf durch den Druck auf einen Button gestartet und danach ein anderer Button gedrückt, soll der aktuelle Lauf abgebrochen werden und der neue gestartet werden.
Das funktioniert allerdings nicht. Wurde ein Button gedrückt, reagieren die anderen Button nicht mehr, nur der Button "Schließen".
im folgenden Programm läuft nach Druck auf einen Button ein Ball vom Rand des Fensters zur Mitte (2D Grafik). Es gibt 3 Button, jeder Button gibt eine andere Startposition vor.
Wird nun ein Durchlauf durch den Druck auf einen Button gestartet und danach ein anderer Button gedrückt, soll der aktuelle Lauf abgebrochen werden und der neue gestartet werden.
Das funktioniert allerdings nicht. Wurde ein Button gedrückt, reagieren die anderen Button nicht mehr, nur der Button "Schließen".
Java:
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.*;
import java.io.ByteArrayOutputStream;
import java.io.PrintStream;
import javax.swing.Timer;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
public class ProgStart extends JApplet implements ActionListener {
int [] StartPos= {0,0};
private final Timer timer = new Timer(100, null);
private JButton VonLinks1;
private JButton VonLinks2;
private JButton VonRechts;
private JButton Schliessen;
private Thread t;
private boolean Hoehenkontrolle = false;
JPanel MainPanel = new JPanel();
Feld Feld = new Feld();
public void init()
{
setSize(800,800);
MainPanel.setLayout(null);
getContentPane().add(MainPanel);
MainPanel.setBounds(0, 0, 800, 800);
Feld.setLayout(null);
MainPanel.add(Feld);
Feld.setBounds(50, 20, 700, 700);
setVisible(true);
VonRechts = new JButton("Von rechts");
VonLinks1 = new JButton("Von links1");
VonLinks2 = new JButton("Von links2");
Schliessen = new JButton("Schließen");
MainPanel.add(VonRechts);
MainPanel.add(VonLinks1);
MainPanel.add(VonLinks2);
MainPanel.add(Schliessen);
int PosxStart = 50;
int PosyStart = 750;
int BreiteButton = 160;
int HoeheButton = 40;
int delta = 20;
VonRechts.setBounds(PosxStart, PosyStart, BreiteButton, HoeheButton);
VonLinks1.setBounds(PosxStart+(BreiteButton+delta)*1, PosyStart, BreiteButton, HoeheButton);
VonLinks2.setBounds(PosxStart+(BreiteButton+delta)*2, PosyStart, BreiteButton, HoeheButton);
Schliessen.setBounds(PosxStart+(BreiteButton+delta)*3, PosyStart, BreiteButton, HoeheButton);
VonRechts.addActionListener(this);
VonLinks1.addActionListener(this);
VonLinks2.addActionListener(this);
Schliessen.addActionListener(this);
VonRechts.setEnabled(true);
VonLinks1.setEnabled(true);
VonLinks2.setEnabled(true);
t = new Thread(new Runnable()
{
@Override
public void run()
{
Weg Weg = new Weg(StartPos);
timer.start();
timer.addActionListener(event ->
{
if (Pack1.GlobalVar.AktPos == Pack1.GlobalVar.SollPos)
{
timer.stop();
}
if (Hoehenkontrolle == true && Pack1.GlobalVar.HoeheUeberschritten == true)
{
timer.stop();
}
Weg.NaechstePos();
repaint();
});
};
});
}
public void Start()
{
}
public void actionPerformed(ActionEvent e)
{
if (e.getSource() == VonRechts)
{
StartPos[0] = 700;
StartPos[1] = 350;
t.start();
}
if (e.getSource() == VonLinks1)
{
StartPos[0] = 0;
StartPos[1] = 350;
Hoehenkontrolle = true;
t.start();
}
if (e.getSource() == VonLinks2)
{
StartPos[0] = 0;
StartPos[1] = 350;
t.start();
}
if (e.getSource() == Schliessen)
{
System.exit(0);
}
}
public void destroy()
{
}
public void stop()
{
}
}