WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 05.03.2002, 20:53   #1
3of4
Elite
 
Registriert seit: 14.11.1999
Alter: 40
Beiträge: 1.429


Standard Java- ActionListener in eigene Klasse

Ich habe in der Schule mir einen kleinen Texteditor geschrieben, habe aber das Problem, das ich gerne die ActionEvents in eine eigene Klasse auslagern würde.
Wie macht man das so, das es funktioniert, irgendwie schaff ich es einfach nicht.

Ps: Leider funzt auf meinem Pc zuhause das bluej nicht, und auch mit der Kommandozeile hauts nicht hin, deshalb habe ich das woran ich gerade arbeite als Kommentare gesetzt, hoffe das es so nicht behindert.
(die restlichen Kommentare kommen übrigens erst wenn ich das Projekt fertig habe, es verwirrt nämlich laut meinen Kenntnissen nichts mehr als Kommentare die dastehen, wo aber die Funktionen dazu geändert wurden)

Kann mir übrigens jemand sagen wieso ich das setVisible(true); erst nach dem adden machen soll, wenn ich es nicht mache zeigt er erst wieder die Objekte an, wenn ich die Größe geändert habe, er also nochmal update() durchführen muss, aber wenn ich etwas in ein Label einen neuen String reinschreibe aktualisiert er sich von selbst????
____________________________________
Resistantium est futilius
3of4 ist offline   Mit Zitat antworten
Alt 06.03.2002, 20:16   #2
ReiniBugman
Jr. Member
 
Registriert seit: 13.09.2001
Beiträge: 83


Standard

Du kannst das ganze mit anonymen Klassen machen, in der Art wie du es bei addWindowListener gemacht hast.

Code:
...
open.addActionListener( new ActionListener()
{
  public void actionPerformed(ActionEvent e)
  {
    open(tf.getText());
  }
} );
...
oder du machst dir überhaupt eine neue Klasse die das ActionListener-Interface implementiert so wie du es in der Klasse Dateieditor gemacht hat. Du wirst dann aber Referenzen auf andere Objekte, die du in der actionPerformed-Methode verwendest, irgendwie übergeben müssen (etwa durch den Constructor oder du implementierst dir ein setTextField, ...).
Ausnahme: wenn du Inner-Classes verwendest, brauchst du das nicht.


Was das setVisible betrifft: ich hab zwar die Sourcen vom JDK grad nicht bei der Hand, aber ich schätze mal daß Label.setText() ein validate() im Parent-Container bewirkt, das wiederum den Layout-Manager den Fenster-Inhalt neu aufbauen läßt.
ReiniBugman ist offline   Mit Zitat antworten
Alt 06.03.2002, 22:32   #3
3of4
Elite
 
Registriert seit: 14.11.1999
Alter: 40
Beiträge: 1.429


Standard

add innerClasses, damit meinst du, nehme ich zumindest an, lokale Klassen, aber ich will den ActionListener mit actionPerformed in einer eigenen klasse, und dann einfach zb. Dateieditor.closewindow(); aufrufen, und das Fenster soll sich schließen.

Kennt jemand außerdem eine gute Methode, wie ich rausfinden kann, (wenn das Textarea ein Event sendet), was der User verändert hat`???
Im Moment hau ich immer wenn ein event kommt, den ganzen Inhalt auf den Stack, was ich aber nicht sehr effizient finde
____________________________________
Resistantium est futilius
3of4 ist offline   Mit Zitat antworten
Alt 09.03.2002, 12:55   #4
it00x30
Veteran
 
Registriert seit: 21.07.2001
Alter: 45
Beiträge: 404


Standard

so wiet ich weiss kannst du nur den vorigen inhalt merken, und mit dem geänderten inhalt vergleichen - was du warscheinlich eh schon machst ...

ich muss ehrlich sagen, die lösung mit anonymen inneren klassen find ich beschissen - wenn man mal ziemlich viel macht zb bei einem mouseevent wird das extrem unübersichtlich.

zu der frage im ersten posting: das setvisible(true) darum am schluss, da sonst der frame nicht neu gezeichnet wird, nur weil du ein element addest. es läuft so ab, dass du den frame zeichnest, dann erst die buttons, ... hinzufügst aber den frame nie neu zeihcnen lässt - man sieht nichts von den buttons, erst bei einer grössenänderung (so weit ich weiss beim verschieben auch nicht) wird der frame dann neu gezeichnet und die elemente werden sichtbar.
so was einfach angewöhnen, das erspart viel ärger (glaubs mir :-( )
it00x30 ist offline   Mit Zitat antworten
Alt 10.03.2002, 22:24   #5
Tarjan
Quantensingularität
 
Registriert seit: 28.09.2000
Alter: 55
Beiträge: 8.336


Tarjan eine Nachricht über ICQ schicken
Standard

Anonyme inner Klassen sind nur gut bei einzelnen kurzen Events.

Übersichtlich ist das MVC Pattern, dh. eigene Klassen für Model View Controller (bzw. auch aufgesplittete Controllerklassen für unterschiedliche Eventkategorien).
____________________________________
Was ist klein, grün und dreieckig?
Ein kleines grünes Dreieck!


Bahnübergänge sind die härtesten Drogen der Welt! Ein Zug und du bist weg!
Tarjan ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:08 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag