ich starte das Ding logischerweisse mit run. Aber trotzdem friert mir das ganze immer ein. Hatte kurz überlegt die Variablen im run Thread zu initalisieren, aber das ist glaub ich auch falsch?! Hatte da dann auch ZUgriffsprobleme. Er stürzt immer ab wenn ich den Button condtion 2 mal anklicke, sprich wenn er dann "bereit" anzeigen soll. Liegt es denn daran das die GUI einfriert das ich das nicht innem Thread starte? Oder ist da generell en Fehler drin.
Danke für die Hilfe Anbei den Quellcode für die GUI
Danke für die Hilfe Anbei den Quellcode für die GUI
Java:
import javax.swing.*;
import javax.swing.JButton;
import javax.swing.JFrame;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class GUIT extends Thread{
JFrame frame;
public final JButton condition = new JButton("false");
public final JTextArea meldungen = new JTextArea();
public final JTextArea clients = new JTextArea();
public final JTextArea intervall = new JTextArea();
public final JTextArea verzoegerungszeit = new JTextArea();
public final JTextArea timeout = new JTextArea();
final JLabel intervall_label = new JLabel("Intervall:");
final JLabel verzoegerungszeit_label = new JLabel("Verzoegerung:");
final JLabel timeout_label = new JLabel("Timeout:");
final chef_impl chef;
public GUIT(chef_impl cheftmp){
cheftmp.setGUI(this);
this.chef= cheftmp;
}
public void addClient(String client){
String tmp = clients.getText();
tmp = tmp + "\n"+ client;
clients.setText(tmp);
}
public int getProzesse(){
return Integer.valueOf(intervall.getText()).intValue();
}
public int getWTime(){
return Integer.valueOf(verzoegerungszeit.getText()).intValue();
}
public int getTerm(){
return Integer.valueOf(timeout.getText()).intValue();
}
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
JFrame frame = new JFrame();
frame.setSize(900,500);
frame.setLayout(null);
frame.setVisible(true);
intervall_label.setBounds(50,10,100,30);
frame.add(intervall_label);
meldungen.setBounds(10, 60, 300, 300);
frame.add(meldungen);
clients.setBounds(350, 60, 200, 300);
frame.add(clients);
verzoegerungszeit_label.setBounds(180, 5, 200, 20);
frame.add(verzoegerungszeit_label);
verzoegerungszeit.setBounds(180, 30, 200, 20);
frame.add(verzoegerungszeit);
intervall_label.setBounds(400, 5, 200, 20);
frame.add(intervall_label);
intervall.setBounds(400, 30, 200, 20);
frame.add(intervall);
timeout_label.setBounds(620, 5, 200, 20);
frame.add(timeout_label);
timeout.setBounds(620, 30, 200, 20);
frame.add(timeout);
condition.setBounds(10,10,120,30);
frame.add(condition);
condition.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e){
String tmp = meldungen.getText();
String tmp2= chef.goon();
tmp = tmp + tmp2;
if(tmp2.equals("Zustand inital gesetzt")){
//condition.setText("inital");
}
else if(tmp2.equals("Zustand ist bereit")){
//condition.setText("bereit");
}
meldungen.setText(tmp);
}
});
}
}