Lotus Notes / Domino Sonstiges > Java und .NET mit Notes/Domino
Componenten auf einer JDesktopPane überprüfen
MadMetzger:
Für den Moment habe ich das minimieren verboten. Ich habe es nicht hinbekommen bzw. habe aus Zeitgründen erstmal diesen Weg gewählt... Dann kann ich das Fenster schließen und bekomme die Simulation wieder über die Liste per Doppelklick geöffnet.
Ich habe irgendwie nicht die Unterschiede zwischen show() und setVisible(true) und anderen Methoden verstanden... die waren nicht so klar beschrieben in der API-Doku... Daher dieser Weg.
Du hast insofern recht, dass man Swing am ehesten beim Benutzen lernt. Vor diesem Projekt wusste ich gerade mal, wozu man Swing gebrauchen kann...
Trotzdem erstmal ein Dankeschön an alle! Werde mich jetzt anderen Problemen dieser Anwendung zuwenden, bzw. fürs erste schlafen gehen und PetriNetze PetriNetze sein lassen...
Gute Nacht!
Ralf_M_Petter:
Mad metzger du verwendest aber keine Methoden von ausserhalb des Event Handler Threads. Gerade wenn in Swing Probleme auftreten, die machmal da sind und dann funktioniert wieder alles einwandfrei, sprechen dafür, dass da nicht sauber gearbeitet wird. Wie gesagt, bei Swing vor allem in den neueren Versionen darf nur von Event Handler Thread aus auf Swing Objekte zugegriffen werden. Wenn du das Bedürfnis hast, von anderen Threads auf Swing zuzugreifen musst du immer invokeLater verwenden.
Grüße
Ralf
flaite:
Ziemlich allgemeines Gewäsch, aber sehr wahr:
Sobald du mit etwas komplexen und für dich unbekannten wie Swing unter Zeitdruck arbeitest, wirst du alle Prinzipien über sauberes Design über Bord werfen und in einer Soße mit größer werdenden Klumpen enden (engl: un-maintainable code).
Die Frage geht ja nicht über Petri-Netze, sondern über - sagen wir - "Fenster-Management", d.h. wo hälst du die Referenzen der JInternalFrames und wie bringst du sie in den gewünschten state.
Ich würd sowas in einer Klasse PresentationModel halten, die völlig unabhängig von JFrame oder sonstigen komplexen Swing-Klassen ist.
Du kannst anfangen, dir anzuschauen wie andere openSource Projekte Fenster-Management steuern. Oder Bücher kopieren. Wobei sich die meisten Swing Bücher sich mit den zahlreichen Swing-Klassen beschäftigen und weniger mit dem allgemeinen Design einer Desktop Anwendung auseinandersetzen. Eine Ausnahme ist das hier: http://www.sourcebeat.com/TitleAction.do?id=10
zu invokeLater:
Ich habs gerade wieder selber in meinem Webservices-Projekt für HELP gemerkt: Threading Issues können komplex werden. Es gibt Alternativen. Das ist ziemlich gut für das allgemeine Verständnis: http://www.javalobby.org/members-only/eps/galbraith-swing-2/?source=archives
MadMetzger:
Aufgrund von Zeitdruck ist mir das im Moment nicht möglich solche Dinge noch zu implementieren... Leider hat ein Tag nur 24 Stunden und ein paar Klausuren muss ich ab morgen auch noch schreiben.
Der Hinweis auf eine Klasse PresentationModel klingt recht gut, bei mehr Zeit würde ich mich damit auch noch einmal auseinandersetzen...
hier mal ein Codebeispiel, in dem ich die Fenster aufrufe:
--- Code: ---private void getAendernButtonAction(){
NetChangingWindow netChangingWindow = (NetChangingWindow) this.uebersichtList.getSelectedValue();
if (netChangingWindow!=null){
Aenderungsfenster af = this.controller.editNet(netChangingWindow);
if(!this.desktopPaneHasWindow(af))this.hauptfensterDesktopPane.add(af);
af.setVisible(true);
af.toFront();
}else{
Runnable r = new StatusZeilenHandler(Constants.MESSAGE_NO_NET_FOR_DESIGNING_SELECTED, this.getStatusZeilenTextField());
new Thread(r).start();
}
}
--- Ende Code ---
NetChangingWindow ist meine Wrapperklasse, die mir eine Referenz auf mein Netz und das Änderungsfenster bietet.
Wie würde ich denn bei einem minimiertem Fenster vorgehen? isIconified abfragen und dann?
flaite:
--- Zitat von: MadMetzger am 12.03.06 - 20:23:32 ---Aufgrund von Zeitdruck ist mir das im Moment nicht möglich solche Dinge noch zu implementieren...
--- Ende Zitat ---
Gerade in der Uni ist es oft schlau, Dinge lieber ein bischen schneller zu machen, auch wenn die Qualität drunter leidet.
Hört sich komisch an, ist aber leider so.
Hab mal einen Fanatiker als Freund, der am Ende für 1-Monats Hausarbeiten 10 Monate brauchte. Die waren dann auch wirklich gut. Der Preis an Zeit war aber trotzdem nicht vertretbar.
Ich kapiere diesen Teil überhaupt nicht:
--- Code: --- Runnable r = new StatusZeilenHandler(Constants.MESSAGE_NO_NET_FOR_DESIGNING_SELECTED, this.getStatusZeilenTextField());
new Thread(r).start();
--- Ende Code ---
Sieht für mich nach überkomplexer Patternities aus?
Ich habs nicht ausprobiert, aber so die Art
--- Code: ---else {
SwingUtilities.invokeLater(new Runnable() {
public void run() { getStatusZeilenTextField()).setText(Constants.MESSAGE_NO_NET_FOR_DESIGNING_SELECTED);
}
});
} // end if
--- Ende Code ---
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln