Hi!
Ich habe folgendes Problem.
Mein Programm sieht folgendrmaßen aus:
Mein Problem ist folgendes:
Indem der Aufruf "NewProject();" in main() steht, muß NewProject() static sein.
Durch das static von NewProject ergeben sich jedoch weitere Nachteile.
z.B. daß ich nicht
cancelBut.addActionListener(this);
schreiben kann, sondern
cancelBut.addActionListener(new NeuAnfang());
schreiben muß. Deshalb auch die Abfrage mit "initialized" in NeuAnfang(), da das Erzeugen des Dialogs mit jedem zusätzlichen ActionListener sonst immer langsamer wird.
Auch getClass().getResource() um Grafiken innerhalb einer jar-Datei zu laden ist bei static nicht möglich.
Lasse ich hingegen NewProject() in main() weg und schreibe es in NeuAnfang(), dann wird erst das Dialogfenster erzeugt und das Hauptfenster erscheint erst, wenn ich den Dialog geschlossen habe.
Damit direkt beim Start erst das Hauptfenster erscheint und hinterher der Dialog erscheint und über dem Hauptfenster liegt, sehe ich bisher nur die Möglichkeit NewProject() in main zu schreiben.
Doch dort gibt es das Problem mit static.
Weiß irgendjemand einen Ausweg?
Ich habe folgendes Problem.
Mein Programm sieht folgendrmaßen aus:
Java:
public class NeuAnfang extends JFrame implements ActionListener {
private static JFrame rahmen;
[...]
private static JDialog NewProjDialog;
private static boolean initialized;
public void createMenu() {
[...]
}
public void createToolBar() {
[...]
}
public NeuAnfang() {
super("Neues Glueck");
if (initialized==false) {
menueLeiste = new JMenuBar();
System.out.println("wurde aufgerufen");
createMenu();
createToolBar();
initialized=true;
} else {
System.out.println("wurde schon initialisiert");
}
}
public void actionPerformed(ActionEvent event) {
[...]
} else if ((event.getSource() == file_new) || (event.getSource() == T_New)) {
NewProject();
[...]
}
public static void NewProject() {
NewProjDialog = new JDialog(rahmen, "neues Project");
NewProjDialog.setSize(490,400);
NewProjDialog.setResizable(false);
NewProjDialog.setModal(true);
[...]
cancelBut = new JButton("Abbrechen");
cancelBut.addActionListener(new NeuAnfang());
[...]
}
public static void main(String[] args) {
initialized=false;
rahmen = new NeuAnfang();
WindowListener l = new WindowAdapter()
{
public void windowClosing(WindowEvent we)
{
System.exit(0);
}
};
rahmen.addWindowListener(l);
rahmen.setSize(750,600);
rahmen.setLocationRelativeTo(null);
rahmen.setExtendedState(rahmen.MAXIMIZED_BOTH);
rahmen.setVisible(true);
NewProject();
}
}
Mein Problem ist folgendes:
Indem der Aufruf "NewProject();" in main() steht, muß NewProject() static sein.
Durch das static von NewProject ergeben sich jedoch weitere Nachteile.
z.B. daß ich nicht
cancelBut.addActionListener(this);
schreiben kann, sondern
cancelBut.addActionListener(new NeuAnfang());
schreiben muß. Deshalb auch die Abfrage mit "initialized" in NeuAnfang(), da das Erzeugen des Dialogs mit jedem zusätzlichen ActionListener sonst immer langsamer wird.
Auch getClass().getResource() um Grafiken innerhalb einer jar-Datei zu laden ist bei static nicht möglich.
Lasse ich hingegen NewProject() in main() weg und schreibe es in NeuAnfang(), dann wird erst das Dialogfenster erzeugt und das Hauptfenster erscheint erst, wenn ich den Dialog geschlossen habe.
Damit direkt beim Start erst das Hauptfenster erscheint und hinterher der Dialog erscheint und über dem Hauptfenster liegt, sehe ich bisher nur die Möglichkeit NewProject() in main zu schreiben.
Doch dort gibt es das Problem mit static.
Weiß irgendjemand einen Ausweg?