ComponentController, wie logische vergleiche einfliessen lassen?

A

anfangWeissgurt

Gast
Hallo,
hab hier ein problem für awt. Auf einem Frame existiert ein button, der von einem ComponentController an oder aus geschaltet wird:
Java:
setComponentController( new ComponentController( c, getProjectDataDialog().getDlgBttPanel().getBttOK()

c ist ein array von awt-componenten:
Java:
Component[] c ={...};
soweit so (un)schön, nun habe ich das problem, dass ich beim an/ausschalten von dem OK-button, (boolean) werte einfliessen lassen muss, die in keiner Componente vorkommen.

Wie löse ich sowas?

Hab schon versucht eine fake-componente zu basteln, aber das kann es doch nicht sein, oder?
 

Atze

Top Contributor
hä?
verstehe ich nicht, was macht denn so ein component controller? und was musst du dem button fuer werte übergeben?
kannst du dir nicht deinen eigenen controller bauen?
 
A

anfangWeissgurt

Gast
hä?
verstehe ich nicht, was macht denn so ein component controller? und was musst du dem button fuer werte übergeben?
kannst du dir nicht deinen eigenen controller bauen?
Ah, danke für den tip. Dachte schon das wäre eine standart-awt klasse und nicht eine eigene (nicht von mir) gebastelte.
Nun mal nachgeschaut: Er hängt in ComponentController einfach an jede übergebene Componente einen Listener (je nach Objekt verschiedene).
Dh. wenn alle 'ok' melden, wird der button aktiv gemacht, also alle einstellungen/angaben der seite richtig beantwortet wurden.

Hmm, nur nun wie weiter. Wie lösst mensch 'bestpractice'weise so ein abprüfen von texteingaben auswahlfelder auf einer seite in verbindung mit einem 'weiter'-button?
Sieht wohl so aus, als ob ich das bisherige nicht verwenden kann. Da die bisherige klasse zusätzliche variableneingaben, werte die nicht in textfeldern etc stehen, nicht vorsieht. :(

Danke erstmal für den tip, hat mir schon etwas geholfen.
 

Michael...

Top Contributor
Es geht darum, dass ein Button erst aktiviert wird sobald andere Element gesetzt bzw. gefüllt sind?
Dann benötigen diese Elemente znächsteinmal jeweils einen entsprechenden Listener, der auf das Setzten bzw. Füllen reagiert.
Damit könnte man z.B. eine Prüfroutine starten, die den Status aller Elemente prüft und ggf. den Button frei gibt.
Alternativ kann man mittels der Listener auch ein Prüfflag o.ä. setzen, um dann in der Prüfroutine nur diese Flags zu prüfen.
 
A

anfangWeissgurt

Gast
Hallo Michael,
ja darum geht es. Das problem ist, ich habe dazu fremden schon funktionalen, aber weitgehend undokumentierten code, der schon einiges dort macht, soll aber zusätzliche funktionalitäten einbauen. Am besten ohne weite teile neu schreiben zu müssen.

Bin nun schon kurz vor einer lösung mittels eines (dummy-)textfeldes, welches die ursprüngliche abprüfklasse akzeptiert, in dem ich halt das ergebnis meiner zusatzprüfung reinschreibe.

Alternativ kann man mittels der Listener auch ein Prüfflag o.ä. setzen, um dann in der Prüfroutine nur diese Flags zu prüfen.
Kenne bisher nur listener für swing-elemente, maus, etc. Hast du da ev. ein beispiel?
 

Atze

Top Contributor
Kenne bisher nur listener für swing-elemente, maus, etc. Hast du da ev. ein beispiel?

du hast doch selbst was von listenern in einem deiner posts geschrieben, oder? :)

ich dachte eher von deinen benutzten ComponentControllern abzuleiten, und das feld kannst du dann auf der anderen seite mitprüfen. so wie michael schon sagte, bei jedem actionevent alle flags prüfen und erst wenn alle true (o.ä.) zurückgeben die buttons freischalten.
 

Neue Themen


Oben