SWT Tab Listener

Status
Nicht offen für weitere Antworten.
G

Gast2

Gast
Hallo,
was kann ich für einen Listener verwenden bzw. was gibt es für einen Listener wenn ich ein TabItem anklicke???

Code:
    final TabItem photoTabItem = new TabItem(parent, SWT.NONE);
    photoTabItem.setControl(Composite c);
 
G

Gast2

Gast
hab die möglichkeit gefunden

Code:
TabFolder.addSelectionListener(new SelectionAdapter()
    {
      public void widgetSelected(SelectionEvent e)
      {
        System.out.println("Change selection");

      }

    });

hab erst immer beim tabitem gesucht
 

Olel

Mitglied
Ich möchte diese Frage noch mal wieder nach oben holen, denn ich bin auch auf der Suche nach einer geschickten Möglichkeit, um die Selektion eines TabItem anfragen zu können.

Was ich möchte:
Wenn ein TabItem selektiert wird, sollen die Inhalt die innerhalb dieses TabItems dargestellt werden, aktualisiert werden. Dies geschieht in Abhängigkeit einer Selektion in einem TableViewer an anderer Stelle.


Was ich mir wünsche:
Damit jedes Element nur über das bescheid weiß, was es wissen muss (nämlich über die Elemente im TabItem), fänd ich es halt schön, wenn jedes TabItem einen SelectionListener bekommt und darin dann die Aktualisierung vornimmt.

Die Wahrheit:
Leider kann ich einen SelectionListener nur auf den TabFolder setzen. Dann müsste der aber über die jeweiligen Inhalte der TabItems bescheid wissen und zudem auf deren Index basierend die jeweils richtigen Dinge tun: also bspw. wenn das TabItem mit dem Index 2 selektiert wurde, muss halt dessen Ansicht aktualisiert werden - unschön finde ich.

Gibt es eine sinnvolle andere Lösung, die ich bislang noch nicht bedacht habe?

Ole

PS: Eine theoretische Möglichkeit wäre es vielleicht auch TabItem zu überschreiben, aber im API-Doc steht halt klipp und klar drin "is NOT intended to be subclassed".
 
G

Gast2

Gast
du musst nicht unbedingt über den index gehen um das selektierte item rauszufinden du kannst auch über das object gehen

Code:
    TabFolder.addSelectionListener(new SelectionAdapter()
    {
      public void widgetSelected(SelectionEvent e)
      {
        if (TabFolder.getItem(TabFolder.getSelectionIndex()).equals(TabItem1))
        {
           TabItem1.akualisiere();
        }
          if (TabFolder.getItem(TabFolder.getSelectionIndex()).equals(TabItem2))
        {
           TabItem2.akualisiere();
        }
       ......
      }
    });

  }
 

Olel

Mitglied
SirWayne hat gesagt.:
du musst nicht unbedingt über den index gehen um das selektierte item rauszufinden du kannst auch über das object gehen

Ja stimmt, dass ist mir in der Zwischenzeit auch schon aufgefallen. Das ändert aber nichts an dem eigentlichen Problem. In deinem Beispielcode rufst Du ja TabItem.aktualisieren() auf. Das soll zwar sicher nur Pseudocode sein, aber genau hier liegt das Problem. Ich kann ja keine eigenen Methoden an dem TabItem aufrufen, solange ich das TabItem nicht überschreibe. Das ist aber wie gesagt laut API gerade nicht erwünscht.

Ich habe es jetzt wie folgt gelöst:

Code:
myTabFolder.addSelectionListener(new SelectionAdapter() {
    @Override
    public void widgetSelected(SelectionEvent event) {
        Event e = new Event();
        e.data = MeinDatenObjekt;
        ((CTabItem) event.item).notifyListeners(SWT.Selection, e);
    }
});


// Dies hier dann für jedes TabItem
myTabItem1.addListener(SWT.Selection, new Listener() {
    @Override
    public void handleEvent(Event event) {
        if (event.data != null)
        {
            // do Something with the event data
        }
    }
});


Tut auf jeden Fall was ich möchte. Ob es die eleganteste Lösung ist, weiß ich aber nicht. Wenn jemand noch eine bessere Idee hat immer her damit! :)
 
G

Gast2

Gast
du kannst dem TabItem ein Controll(Composite) setzen und das kannst du selber schreiben und auf das kannst du auch überprüfen

Code:
    TabItem.setControl(TabItemControl);
    TabFolder.addSelectionListener(new SelectionAdapter()
    {
      public void widgetSelected(SelectionEvent e)
      {
        if (TabFolder.getItem(TabFolder.getSelectionIndex()).equals(TabItem))
        {
          TabItemControl.akualisiere...
        }
       }
     }
 

Olel

Mitglied
Hmm, aber auch ein Control sollte nicht subclassed werden; hilft hier also auch nicht weiter.
 
G

Gast2

Gast
was????? ein Controll ist z.B. ein Composite da kannst du doch deine ganze GUI drauf packen... und diese dann nach belieben aktualisieren...
 

Olel

Mitglied
Ja, ein Composite ist ein Control und natürlich kann ich da weitere GUI-Elemente (andere Controls) drauf packen, aber darum geht es doch nicht.

Es geht darum, dass ich doch eine selbstgeschriebene Methode aktualisieren() bräuchte, um darin gewisse Dinge tun zu können. Und diese Methode hätte ich nur, wenn ich eine eigene Klasse (z.B. MyControl) schreibe, die von Control erbt. Und das ist laut API eben nicht erlaubt / gewollt.
 
G

Gast2

Gast
nein du schreibst ein eigenes MyComposite dass von Composite erbt und die enthält deine aktualisiere methode...
und dann tabItem.setControl(MyComposite)...
 

Olel

Mitglied
Ok, zugegebenermaßen dürfte ich von Composite erben, wenn ich ein "custom Control" (Zitat aus der API-Doc) schreiben würde. Das tue ich aber nicht und bloß um eine eigene aktualisieren() Methode zu schreiben ist das Überschreiben von Composite nicht der richtige Ansatz, denke ich.
Gibt auch irgendwo einen Artikel von Fowler oder so, der davor warnt alles mögliche zu überschreiben und fordert, dass mehr Aggregation genutzt wird.

Nochmal auf die Idee mit den SelectionListenern: was ist davon zu halten? Gibt es da evtl. noch bessere Lösungen? Andere Meinungen sind herzlich willkommen.
 
G

Gast2

Gast
Gibt auch irgendwo einen Artikel von Fowler oder so, der davor warnt alles mögliche zu überschreiben und fordert, dass mehr Aggregation genutzt wird.

Überschreibst du alles mögliche???
ich weiß ja nicht was deine aktualisiere methode macht... aber wenn sie besondere sachen machen ist sie ein custom control ???:L
 

Olel

Mitglied
Naja, was heißt schon "besondere Sachen". Sie würde halt den Inhalt des Controls ändern, z.B. ein neues Bild laden. Das ist aber aus meiner Sicht kein custom control. Darunter versehe ich ein neues allgemein gültiges Control im Sinne eines Framework, das als Basis für andere dient. Also z.B. ist ein CLabel halt ein "custom Label".

Wie auch immer: fällt noch jemand anderem eine Lösung ein, die ohne Vererbung auskommt?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
padde479 MenuItem MouseEvent/-Listener AWT, Swing, JavaFX & SWT 5
W Gibt es einen "automatischen Listener" in Swing oder JTable oder der ATM-Klasse? AWT, Swing, JavaFX & SWT 14
G listener repaint() - verschiedene Darstellung AWT, Swing, JavaFX & SWT 24
P JTable Listener für die Änderung einzelner Zellen oder Rows AWT, Swing, JavaFX & SWT 2
K Warum genau hat man einen Listener, dann ein Event und was ist ein Adapter AWT, Swing, JavaFX & SWT 2
J Key-Listener in Java AWT, Swing, JavaFX & SWT 37
S JavaFX - mit Listener Veränderungen in einer TableView abhören AWT, Swing, JavaFX & SWT 3
N JavaFX 1 Listener für mehrere ChoiceBoxen AWT, Swing, JavaFX & SWT 3
B Probleme Action Listener Taschenrechner AWT, Swing, JavaFX & SWT 27
M List Listener AWT, Swing, JavaFX & SWT 37
I AWT Listener während man in anderem Fenster ist AWT, Swing, JavaFX & SWT 4
U Funktionsweise Listener AWT, Swing, JavaFX & SWT 1
L TextField Listener AWT, Swing, JavaFX & SWT 13
K Nullpointer Combobox Listener AWT, Swing, JavaFX & SWT 2
L JavaFX Image im ImageView auf Scroll Listener reagieren AWT, Swing, JavaFX & SWT 5
Salo JTabel Selection listener Bsp. AWT, Swing, JavaFX & SWT 5
J JTable Selection Listener funktioniert nicht AWT, Swing, JavaFX & SWT 4
J Action Listener Rückgabewert AWT, Swing, JavaFX & SWT 14
MaxG. Swing JMenu einen Listener Hinzufügen AWT, Swing, JavaFX & SWT 25
L JavaFX Verbindung zwischen Beschreibung und Listener (Codebehind Klasse) AWT, Swing, JavaFX & SWT 4
T Swing Methode in Listener aufrufen AWT, Swing, JavaFX & SWT 3
S Swing Tabellen - Listener & richtige Row AWT, Swing, JavaFX & SWT 3
J Java -8 Action Listener für mehrere Buttons AWT, Swing, JavaFX & SWT 9
S Erste Schritte mit GUI - Fileverarbeitung, Listener,... AWT, Swing, JavaFX & SWT 10
M JButton - Listener AWT, Swing, JavaFX & SWT 1
R Swing Mehrere JTextFields mit einem Document Listener AWT, Swing, JavaFX & SWT 2
K JavaFX Focus Listener für gesamte Scene AWT, Swing, JavaFX & SWT 1
M Key Listener reagiert nicht AWT, Swing, JavaFX & SWT 4
F In Action Listener TextFields einlesen und prüfen. Abbruch bei falschen Eingaben. Wie mache ich das? AWT, Swing, JavaFX & SWT 2
M Listener funktioniert nicht AWT, Swing, JavaFX & SWT 7
S Swing JComboBox mit Listener aktualisieren AWT, Swing, JavaFX & SWT 13
elischa JFrame über mehrere JPanel und Listener AWT, Swing, JavaFX & SWT 17
llabusch Event Handling Listener spielt verrückt AWT, Swing, JavaFX & SWT 8
kaoZ Swing Architektonisches Problem / Listener / MVC AWT, Swing, JavaFX & SWT 14
H org.eclipse.swt.widgets.Scale MouseRelease listener AWT, Swing, JavaFX & SWT 1
MaDDin-94 Swing Listener reagiert nicht immer AWT, Swing, JavaFX & SWT 2
A JLabel im Listener färben AWT, Swing, JavaFX & SWT 11
M Key-,... Listener funktioniert nicht immer AWT, Swing, JavaFX & SWT 2
P Event Handling Listener beim öffnen von einem JPopupMenu AWT, Swing, JavaFX & SWT 3
A Listener für JGTextField AWT, Swing, JavaFX & SWT 2
J Programmierstil: Kommunikation Listener und GUI AWT, Swing, JavaFX & SWT 3
B JTable Renderer / Listener AWT, Swing, JavaFX & SWT 7
M Swing JList Listener AWT, Swing, JavaFX & SWT 20
K Action Listener implementieren über Objekt AWT, Swing, JavaFX & SWT 14
E Listener AWT, Swing, JavaFX & SWT 3
M SWING Listener ohne Wirkung AWT, Swing, JavaFX & SWT 2
P Listener Auswahl Tabelle AWT, Swing, JavaFX & SWT 6
P JPanel- Listener durch JTextArea aktivieren AWT, Swing, JavaFX & SWT 8
J Swing dragging listener AWT, Swing, JavaFX & SWT 5
H Problem mit dem Action listener.... AWT, Swing, JavaFX & SWT 2
J Frame mit Button erstellen - Warum ist es nötig, Frame über Unterklasse zu erstellen? (Reg Listener) AWT, Swing, JavaFX & SWT 2
M Fenster schließen - Listener AWT, Swing, JavaFX & SWT 5
G SWT TreeViewer - drop listener austauschen AWT, Swing, JavaFX & SWT 2
S Action Listener in innerer Klasse ausführen. AWT, Swing, JavaFX & SWT 8
J Sinn eines Selection Listener AWT, Swing, JavaFX & SWT 5
M JList mit DefaultListModel und listener AWT, Swing, JavaFX & SWT 4
M comboBox Listener? AWT, Swing, JavaFX & SWT 2
T Listener in anderen Panel deaktivieren AWT, Swing, JavaFX & SWT 3
A Swing Suche Listener für beliebige Änderung an GUI Items/Controls AWT, Swing, JavaFX & SWT 8
T SWT: Listener auf einem Button reagiert nicht AWT, Swing, JavaFX & SWT 2
L Swing JTextField Content-Listener AWT, Swing, JavaFX & SWT 4
P AWT Wie kann mein listener den Inhalt eines anderen Textfelds ändern? AWT, Swing, JavaFX & SWT 10
M Ansätze zur Kombination mehrerer Listener für Interaktion AWT, Swing, JavaFX & SWT 19
C JLabel Listener auf Textänderung? AWT, Swing, JavaFX & SWT 5
M Mouse Wheel Listener reagiert mehrmals AWT, Swing, JavaFX & SWT 5
F SWT Button listener richtig erstellen AWT, Swing, JavaFX & SWT 2
El_Lobo Swing Problem bei Methodenaufruf in innerer Klasse bei Listener AWT, Swing, JavaFX & SWT 3
S Wem füge ich welchen Listener hinzu? AWT, Swing, JavaFX & SWT 4
R Durch Listener lässt sich Programm nicht mehr ausführen AWT, Swing, JavaFX & SWT 4
T Callback vs. Event listener AWT, Swing, JavaFX & SWT 7
S Swing JTree und seine Listener... AWT, Swing, JavaFX & SWT 4
E JComboBox Listener AWT, Swing, JavaFX & SWT 2
AyKay SWT (alle) Listener bzw. ModifyEventListener entfernen AWT, Swing, JavaFX & SWT 2
S jTextField Listener AWT, Swing, JavaFX & SWT 7
E Listener, werte in andere Klasse übernehmen AWT, Swing, JavaFX & SWT 11
L Action listener in bestimmter spalte AWT, Swing, JavaFX & SWT 2
J AWT Action Listener etc. AWT, Swing, JavaFX & SWT 7
xehpuk Swing Listener für JPopupMenu AWT, Swing, JavaFX & SWT 3
F JCalendar mouseclick listener AWT, Swing, JavaFX & SWT 2
W AWT Listener bei TrayIcon AWT, Swing, JavaFX & SWT 2
K Swing Listener bei JPopupMenu AWT, Swing, JavaFX & SWT 9
E Swing JTextField Listener nach Update?! AWT, Swing, JavaFX & SWT 2
T TransformGroup Listener AWT, Swing, JavaFX & SWT 8
O Swing JTable Listener AWT, Swing, JavaFX & SWT 2
O Collection Listener AWT, Swing, JavaFX & SWT 6
L AWT Paint(g) im Listener aufrufen AWT, Swing, JavaFX & SWT 2
G JTree - Observer oder Listener? AWT, Swing, JavaFX & SWT 6
Avalarion SWT Listener auf Label oder Text Teile AWT, Swing, JavaFX & SWT 10
C Ermitteln ob JComponent einen Listener besitzt AWT, Swing, JavaFX & SWT 2
L JTextfield Listener AWT, Swing, JavaFX & SWT 3
C Listener Probleme AWT, Swing, JavaFX & SWT 6
N Listener für Variable AWT, Swing, JavaFX & SWT 4
C Swing Listener für TabPanel AWT, Swing, JavaFX & SWT 8
B Line aus Listener? AWT, Swing, JavaFX & SWT 11
G Model,Listener und background jobs AWT, Swing, JavaFX & SWT 4
1 JList - clearSelection nicht berücksichtigen im Listener AWT, Swing, JavaFX & SWT 7
I Swing Listener auf JPanel AWT, Swing, JavaFX & SWT 9
Dit_ MutableComboBoxModel | Listener fehlt ? AWT, Swing, JavaFX & SWT 6
T Swing JSlider und Adjustment-Listener wollen nicht so recht AWT, Swing, JavaFX & SWT 2
N Swing Textfield listener AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben