title image


Smiley Re: also muss ich doch ein wenig am Quellcode rumbasteln.....
Hi



Die Anzahl de Komponenten an sich (und überhaupt die Komplexität des Programms) sollte eigentlich keinen sooo großen Einfluß auf die Geschwindigkeit der IDE haben (wobei ich nicht weiß, welche Rolle diese "Forms" da spielen können).



Bevor du also ("unnötige") umstrukturierungen machst, solltest du ggf. abklären, was die Ursache für die Wartezeiten ist.



Aber das ganze scheint ja ziemlich chaotisch zu sein.



Wie genau man das ganze implementiert, bleibt dem Entwickler überlassen (falls er nicht ein GUI-Zusammeklick-Programm verwendet ;-)). Der Name "Modell Edit" suggeriert schon, dass hier vielleicht ein Model-View-Controller Design-Pattern angebracht wäre (d.h. zum Beispiel dass man nicht direkt den Text im TextField setzen sollte) aber dazu müßte man über die Interna mehr wissen.



Zu der Frage von unten:

"TextArea.setText()" funktioniert ja dann nicht mehr und muss dann "Grundeinstellung.TextArea.setText()" nehmen und dann muss ich natürlich die Komponenten auf "public static" in der Grundeinstellung.java setzen damit ich z.B. den Text setzten kann.



Nein! Fields (Variablen) sollten (außer bei wenigen Ausnahmen) NICHT public und NICHT static (und schon GARNICHT "public static") sein. Wenn ich das richtig verstanden habe, sollte "Grundeinstellung.java" den Inhalt EINES Tabs zusammenfassen. Und diese Klasse "Grundeinstellung" hat eine Variable "TextArea". Und in diese TextArea soll dann von einer anderen Klasse aus ein Text geschrieben werden.

(Btw: Variablennamen schreibt man klein, und einer JTextArea den namen "TextArea" zu geben, kann bei mehreren TextAreas im absoluten Chaos enden)



Mal ein bißchen Peseudocode:



So nicht:



//--- Grundeinstellung.java

public class Grundeinstellung extends JPanel

{

public static JTextArea TextArea; // Schlecht: public, noch schlechter: static

...

}



//--- AndereKlasse.java

public class AndereKlasse extends JPanel

{

void foo()

{

Grundeinstellung.TextArea.setText("Bla"); // TextArea könnte null sein...



Grundeinstellung.TextArea = null; // Man könnte damit böse sachen machen...

}

}









Stattdessen lieber so:



//--- Grundeinstellung.java

public class Grundeinstellung extends JPanel

{



// private: Nur 'Grundeinstellung' darf darauf zugreifen.

private JTextArea infoTextArea; // Aha: infoTextArea - da werden info's drin angezeigt! ;-)

...

public Grundeinstellung()

{

infoTextArea = new JTextArea();

...

}



// Man darf den infoText von außen setzen (aber in diesem Fall nicht lesen)

public void setInfoText(String infoText)

{

infoTextArea.setText(infoText);

}

}



//--- AndereKlasse.java

public class AndereKlasse extends JPanel

{

// Diese Klasse will den infoText in einem Objekt der Klasse 'Grundeinstellung' ändern

private Grundeinstellung grundeinstellung;



// Dieses objekt bekommt sie beim Erstellen übergeben

public AndereKlasse(Grundeinstellung grundeinstellung)

{

this.grundeinstellung = grundeinstellung;

...

}



void foo()

{

grundeinstellung.setInfoText("Bla");

}

}



//--- HauptKlasse.java

public class HauptKlasse extends JFrame

{

public HauptKlasse()

{

...



Grundeinstellung grundeinstellung = new Grundeinstellung();



// Die Grundeinstellung an die Klasse übergeben, die den Text setzen will

AndereKlasse andereKlasse = new AndereKlasse(grundeinstellung);





tabbedPane.add("Grundeinstellung", grundeinstellung);

tabbedPane.add("AndereKlasse", andereKlasse);

...

}

}







Nochmal:

Das ist nur Pseudocode, und wie genau man das ganze implementiert, bleibt dem Entwickler überlassen. Aber es gibt einige "Do"'s und "Don't"s, die man in jedem Fall berücksichtigen sollte.



bye









geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: