Hallo
ich habe ein kleines problem mit awt. Zuerst eine kleine Einführung wie mein Programm funktioniert:
Wenn das Programm gestartet wird, erzeugt es ein Objekt der Klasse StartupWindow, welches ein Fenster anzeigt mit mehren Textboxen und einem Button um die eingegebenen Daten zu bestätigen. Wenn man nun auf Ok klickt, wird dispose() ausgeführt und danach ein Objekt der Klasse EnergyGraph (dieses enthält übrigens auch die main methode) erzeugt, die Daten aus den Textfeldern werden im Konstruktor übergeben. Dann ruft StartupWindow die Methode runnow() aus der EnergyGraph-Klasse auf, welche die Daten verarbeitet und ein Objekt der Klasse GraphicInterface erzeugt, welches die Ausgabe graphisch darstellt.
Das Problem ist nun, dass GraphicInterface seit ich die Klasse StartupWindow hinzugefügt habe nur noch ein leeres Fenster darstellt. Nicht mal der X-Knopf oben am Fenster funktioniert. Vorher hat alles funktioniert, also bevor ich dieses StartupWindow geschrieben hab. Der Sinn dieser Klasse ist, dass ich das Programm nicht mehr über die Konsole mit Parameter starten muss, der StartupWindow soll dem Benutzer die möglichkeit geben beim Startup die Daten einzugeben.
Hier mal der Code vom StartupWindow, vielleicht hilft das:
Soweit ich weiss, werden die Berechnungen alle durchgeführt, nur wird ausser dem leeren Fenster nichts angezeigt.
Helft mir bitte
Mit freundlichen Grüßen
Raptor
ich habe ein kleines problem mit awt. Zuerst eine kleine Einführung wie mein Programm funktioniert:
Wenn das Programm gestartet wird, erzeugt es ein Objekt der Klasse StartupWindow, welches ein Fenster anzeigt mit mehren Textboxen und einem Button um die eingegebenen Daten zu bestätigen. Wenn man nun auf Ok klickt, wird dispose() ausgeführt und danach ein Objekt der Klasse EnergyGraph (dieses enthält übrigens auch die main methode) erzeugt, die Daten aus den Textfeldern werden im Konstruktor übergeben. Dann ruft StartupWindow die Methode runnow() aus der EnergyGraph-Klasse auf, welche die Daten verarbeitet und ein Objekt der Klasse GraphicInterface erzeugt, welches die Ausgabe graphisch darstellt.
Das Problem ist nun, dass GraphicInterface seit ich die Klasse StartupWindow hinzugefügt habe nur noch ein leeres Fenster darstellt. Nicht mal der X-Knopf oben am Fenster funktioniert. Vorher hat alles funktioniert, also bevor ich dieses StartupWindow geschrieben hab. Der Sinn dieser Klasse ist, dass ich das Programm nicht mehr über die Konsole mit Parameter starten muss, der StartupWindow soll dem Benutzer die möglichkeit geben beim Startup die Daten einzugeben.
Hier mal der Code vom StartupWindow, vielleicht hilft das:
Code:
import java.awt.*;
import java.awt.event.*;
public class StartupWindow extends Frame implements ActionListener{
private static final long serialVersionUID = 1L;
private String host;
private int updaterate,timespan;
private TextField hosttext, ratetext, timetext;
public StartupWindow(String title){
super(title);
setLocation(300,150);
GridBagLayout gbl = new GridBagLayout();
GridBagConstraints gbc;
setLayout(gbl);
//Initialise host, updaterate and timespan
this.host = "217.31.67.174";
this.updaterate = 15;
this.timespan = 48;
//Host label
gbc = makegbc(0,0,1,1);
gbc.fill = GridBagConstraints.NONE;
Label host = new Label("Host : ", Label.LEFT);
gbl.setConstraints(host, gbc);
add(host);
//Host textbox
gbc = makegbc(1,0,2,1);
gbc.fill = GridBagConstraints.HORIZONTAL;
hosttext = new TextField(this.host);
gbl.setConstraints(hosttext, gbc);
add(hosttext);
//Updaterate label
gbc = makegbc(0,1,2,1);
gbc.fill = GridBagConstraints.NONE;
Label rate = new Label("Updaterate in Minuten : ", Label.LEFT);
gbl.setConstraints(rate, gbc);
add(rate);
//Updaterate textbox
gbc = makegbc(2,1,1,1);
gbc.fill = GridBagConstraints.HORIZONTAL;
ratetext = new TextField(Integer.toString(this.updaterate));
gbl.setConstraints(ratetext, gbc);
add(ratetext);
//Timespan label
gbc = makegbc(0,2,2,1);
gbc.fill = GridBagConstraints.NONE;
Label time = new Label("Zeitspanne in Stunden : ", Label.LEFT);
gbl.setConstraints(time, gbc);
add(time);
//Timespan textbox
gbc = makegbc(2,2,1,1);
gbc.fill = GridBagConstraints.HORIZONTAL;
timetext = new TextField(Integer.toString(this.timespan));
gbl.setConstraints(timetext, gbc);
add(timetext);
//Start button
gbc = makegbc(0,3,2,1);
gbc.fill = GridBagConstraints.NONE;
Button button = new Button("Start");
gbl.setConstraints(button, gbc);
button.addActionListener(this);
add(button);
pack();
setVisible(false);
}
public void actionPerformed(ActionEvent event){
if (event.getActionCommand().equals("Start")){
setVisible(false);
dispose();
host = hosttext.getText();
try {
updaterate = Integer.parseInt(ratetext.getText());
} catch (NumberFormatException e) {
System.err.println("Updaterate wurde nicht als Zahl angeben");
System.exit(1);
}
try {
timespan = Integer.parseInt(timetext.getText());
} catch (NumberFormatException e) {
System.err.println("Zeitspanne wurde nicht als Zahl angeben");
System.exit(1);
}
if ( updaterate<1 ){
System.err.println("Die minimale Updaterate ist 1 Minute");
System.exit(1);
}
if (timespan<6){
System.err.println("Die kleinste Zeitspanne sind 6 Stunden");
System.exit(1);
}
if (timespan>744){
System.err.println("Die größte Zeitspanne sind 744 Stunden (31 Tage)");
System.exit(1);
}
EnergyGraph e = new EnergyGraph(host,updaterate,timespan);
e.runnow();
}
}
private GridBagConstraints makegbc(int x, int y, int width, int height){
GridBagConstraints gbc = new GridBagConstraints();
gbc.gridx = x;
gbc.gridy = y;
gbc.gridwidth = width;
gbc.gridheight = height;
gbc.insets = new Insets(1,1,1,1);
gbc.weightx = 100;
gbc.weighty = 100;
return gbc;
}
}
Helft mir bitte
Mit freundlichen Grüßen
Raptor