Hallo zusammen. Folgendes Problem: Wir nehmen in der Schule gerade Threads durch und sollten mal versuchen irgendwas mit Threads zu programmieren. Ich habe mir über Jigloo (Plugin für Eclipse) nun ein Programm gebastelt, bestehend aus 3 Textfeldern (stellt die Ampel dar) und 3 Buttons (Start, Stop, Ende). Klick man auf start, soll die Ampel erst rot, dann gelb, dann grün anzeigen und solange wiederholen, bis man auf stop klickt. Allerdings führt Eclipse das Programm erst gar nicht aus, obwohl kein Fehler vorliegt. Das Programm wird nicht als Applet erkannt, da ich nicht "extends Applte" machen kann, da schon "extends javax.swing.JFrame" vorhanden ist. Kann ich irgendwie beides zusammen nutzen, oder kann ich das Programm anders nutzen. Ich weiß dass beim der Ampel noch kleinere Probleme sind, ich will im Moment nur so weit kommen, dass ich das Programm starten kann.
Im Voraus schon mal vielen Dank !!!
Hier der Quellcode:
----------------------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------
Im Voraus schon mal vielen Dank !!!
Hier der Quellcode:
----------------------------------------------------------------------------------------------------------------------------------------
Code:
package uebung8;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.applet.Applet;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
/**
* @author Thomas Steffen
*
* Folgendes auswählen, um die Schablone für den erstellten Typenkommentar zu ändern:
* Fenster&Benutzervorgaben&Java&Codegenerierung&Code und Kommentare
*/
/**
* This code was generated using CloudGarden's Jigloo
* SWT/Swing GUI Builder, which is free for non-commercial
* use. If Jigloo is being used commercially (ie, by a
* for-profit company or business) then you should purchase
* a license - please visit [url]www.cloudgarden.com[/url] for details.
*/
public class uebung8 extends javax.swing.JFrame {
private JButton Ende;
private JButton Stop;
private JButton Start;
private JTextField Gruen;
private JTextField Gelb;
private JTextField Rot;
private Thread t = null;
private boolean runFlag = true;
public uebung8() {
initGUI();
}
public static void main(String[] args) {
}
/**
* Initializes the GUI.
* Auto-generated code - any changes you make will disappear.
*/
public void initGUI(){
try {
preInitGUI();
Rot = new JTextField();
Gelb = new JTextField();
Gruen = new JTextField();
Start = new JButton();
Stop = new JButton();
Ende = new JButton();
this.getContentPane().setLayout(null);
this.setSize(new java.awt.Dimension(375,268));
Rot.setEditable(false);
Rot.setPreferredSize(new java.awt.Dimension(59,56));
Rot.setBounds(new java.awt.Rectangle(19,20,59,56));
this.getContentPane().add(Rot);
Gelb.setEditable(false);
Gelb.setPreferredSize(new java.awt.Dimension(60,56));
Gelb.setBounds(new java.awt.Rectangle(19,88,60,56));
this.getContentPane().add(Gelb);
Gruen.setEditable(false);
Gruen.setPreferredSize(new java.awt.Dimension(61,58));
Gruen.setBounds(new java.awt.Rectangle(19,155,61,58));
this.getContentPane().add(Gruen);
Start.setText("Start");
Start.setPreferredSize(new java.awt.Dimension(72,20));
Start.setBounds(new java.awt.Rectangle(154,39,72,20));
this.getContentPane().add(Start);
Start.addActionListener( new ActionListener() {
public void actionPerformed(ActionEvent evt) {
StartActionPerformed(evt);
}
});
Stop.setText("Stop");
Stop.setPreferredSize(new java.awt.Dimension(72,20));
Stop.setBounds(new java.awt.Rectangle(154,76,72,20));
this.getContentPane().add(Stop);
Stop.addActionListener( new ActionListener() {
public void actionPerformed(ActionEvent evt) {
StopActionPerformed(evt);
}
});
Ende.setText("Ende");
Ende.setPreferredSize(new java.awt.Dimension(71,20));
Ende.setBounds(new java.awt.Rectangle(155,112,71,20));
this.getContentPane().add(Ende);
Ende.addActionListener( new ActionListener() {
public void actionPerformed(ActionEvent evt) {
EndeActionPerformed(evt);
}
});
postInitGUI();
} catch (Exception e) {
e.printStackTrace();
}
}
/** Add your pre-init code in here */
public void preInitGUI(){
}
/** Add your post-init code in here */
public void postInitGUI(){
}
class ampel implements Runnable {
public void run()
{
runFlag = true;
while (runFlag) {
try {
while (runFlag){
Rot.setBackground(Color.red);
Thread.sleep(1000);
Gelb.setBackground(Color.yellow);
Thread.sleep(1000);
Gruen.setBackground(Color.green);
Thread.sleep(1000);
}
} catch (InterruptedException e) {
}
}
}
}
public void init() {
initGUI();
}
/**
* Auto-generated code - any changes you make will disappear!!!
* This static method creates a new instance of this class and shows
* it inside a new JFrame, (unless it is already a JFrame).
*/
public static void showGUI(){
try {
uebung8 inst = new uebung8();
inst.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
protected void StartActionPerformed(ActionEvent evt){
if (t == null) {
t = new Thread(new ampel());
t.start();
}
return;
}
protected void StopActionPerformed(ActionEvent evt){
runFlag = false;
t = null;
}
protected void EndeActionPerformed(ActionEvent evt){
System.exit(0);
}
}
----------------------------------------------------------------------------------------------------------------------------------------