java-forum.org - Java programmieren aus Leidenschaft
Java 6 Einstieg und professioneller Einsatz
Alter Preis: 34,90 EUR
Jetzt: 0,00 EUR

zzgl. Versandkosten

Zurück   java-forum.org - Java programmieren aus Leidenschaft > Java - Programmierung > AWT, Swing, JavaFX & SWT

AWT, Swing, JavaFX & SWT Themen zur Programmierung von Benutzer-Oberflächen (GUI, Applet) sowie zur Grafikprogrammierung (2D / 3D)

Thema geschlossen    
Themen-Optionen Thema durchsuchen Ansicht
Alt 07.07.2009, 13:01   #1 (permalink)
Neuer Benutzer
Bit
 
Registriert seit: 07.07.2009
Fachbeiträge: 5
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Standard Focus Listener bei PComboBox von pswing Erweiterung

Hallo zusammen,

ich benutze in meiner GUI die JComboBox Erweiterung PComboBox, welche in der Java Swing Componentenen Libary enthalten ist. Die API dieser Erweiterung und Demos findet man unter PSwing Java Swing Components .

Hier ist für die PComboBox ein PComboFocusListener beschrieben, der vom FocusListener erbt, also auch die funktionen focusGained und focusLost verwendet. Nur benötigt der PComboFocusListener einen FullWordComboKeySelectionModel, wo ich auch nicht kapiere was er macht.

Nun mein Problem, ich benötige ein Listener, der mir erkennt, wann das Objekt den Focus bekommt, um alle meine PComboBoxen zu aktualisieren beim Verlust des Focus. Derzeit passiert jedoch gar nichts, mache derzeit auch nur eine Textausgabe.

Nun zu meinem Code:

Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
veranstaltungsDozentComboBox = new PComboBox(DB_GUI_neueBuchung
                .gibEintraege("dozent"));
        veranstaltungsDozentComboBox.setAllowNewEntries(true);
        veranstaltungsDozentComboBox.setPreferredSize(new Dimension(200, 18));
        veranstaltungsDozentComboBox.buildIndex();
        
        PComboFocusListener pcomboFL = new PComboFocusListener(new FullWordComboKeySelectionModel(veranstaltungsDozentComboBox)){
            public void focusGained(java.awt.event.FocusEvent arg0) {
                System.out.println("Neuer Eintrag in Dozent ComboBox focusgained");
            }
            public void focusLost(java.awt.event.FocusEvent arg0) {
                System.out.println("Neuer Eintrag in Dozent ComboBox focuslost");
            }
        };

Also gehe davon aus dass ich irgend ein Fehler bei der Implementierung gemacht habe. Weiß auch nicht ob ich den pcomboFL noch adden muss, hatte es zwar versucht, hat aber auch nichts genützt.

Danke schonmal für eure Hilfe.
Iceman007 ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 07.07.2009, 14:39   #2 (permalink)
Java-Forum Team
Moderator
 
Benutzerbild von Ebenius
 
Registriert seit: 17.11.2003
Fachbeiträge: 4.827
Abgegebene Danke: 21
Erhielt 209 Danke für 187 Beiträge
Ich hab direkt keine Ahnung. Aber vielleicht hilft es Dir, einfach einen InputVerifier auf die JComboBox zu werfen, der die Aktion ausführt und dann true zurück gibt.

Ebenius
__________________
The first rule of program optimization: don't do it. The second rule of program optimization (for experts only!): don't do it yet. [Michael Anthony Jackson]
Ebenius ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 07.07.2009, 14:56   #3 (permalink)
Neuer Benutzer
Bit
Themenstarter
 
Registriert seit: 07.07.2009
Fachbeiträge: 5
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Danke für die Antwort, aber ich glaube der InputVerifier funktioniert bei der PComboBox nicht, genau wie der FocusListener. Müsste schon explizit wissen, bzw verstehen wie der PComboFocusListener funktioniert.
Ich verstehe aber an der Stelle auch nicht wie der InputVerifier funktioniert. Bin leider nicht so bewandt in mit Java Swing.
Iceman007 ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 07.07.2009, 15:03   #4 (permalink)
Java-Forum Team
Moderator
 
Benutzerbild von Ebenius
 
Registriert seit: 17.11.2003
Fachbeiträge: 4.827
Abgegebene Danke: 21
Erhielt 209 Danke für 187 Beiträge
InputVerifier (so vorhanden) wird immer gefragt, wenn eine Komponente ihren Focus verliert. Wenn der InputVerifier etwas dagegen hat, gibt er false zurück und dann wird der Fokus nicht transferiert.

Da die besagte Komponente auf Swing aufsetzt, würde ich erwarten, dass sie sich wie eine Swing-Komponente verhält. Mehr zum Thema Fokus: Sun Java™ Tutorial: Validating Input.

Kann es sein, dass Du etwas ganz anderes falsch machst; zum Beispiel die Komponente initialisierst, den Listener draufpackst und dann eine andere Instanz erzeugst und diese hinzufügst? Manchmal passieren solche Dinge... Ansonsten: Benutz doch einen Debugger und schau nach was passiert.

Ebenius
__________________
The first rule of program optimization: don't do it. The second rule of program optimization (for experts only!): don't do it yet. [Michael Anthony Jackson]
Ebenius ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 07.07.2009, 15:23   #5 (permalink)
Neuer Benutzer
Bit
Themenstarter
 
Registriert seit: 07.07.2009
Fachbeiträge: 5
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Kann schon sein dass ich was ganz anderes falsch mache, dass weiß ich ja eben nicht, hatte gehofft hier eine Antwort zu finden.
Und zu dem InputVerifier, mir ist es doch egal ob es eine gültige oder falsche Eingabe ist, hauptsache halt überhaupt eine Eingabe. Und laut der API vom pswing, sollte es ja nicht so schwierig sein den PComboFocusListener zu verwenden.
Iceman007 ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 08.07.2009, 09:32   #6 (permalink)
Stammbenutzer
Viertel Gigabyte
 
Registriert seit: 29.05.2007
Fachbeiträge: 4.933
Abgegebene Danke: 192
Erhielt 229 Danke für 225 Beiträge
Hast du den Listener überhaupt deiner Komponente hinzugefügt?
SirWayne ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 08.07.2009, 12:22   #7 (permalink)
Neuer Benutzer
Bit
Themenstarter
 
Registriert seit: 07.07.2009
Fachbeiträge: 5
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Sicherlich habe ich das auch versucht, nur übergebe ich die Komponente ja schon oben dem FullWordComboKeySelectionModel so dass ich mir nicht sicher bin ob ich die Komponente überhaupt noch hinzufügen muss.
Wie gesagt, kann mit dem FullWordComboKeySelectionMode und der PComboBox nichts anfangen. Werde mir wohl etwas selber schreiben müssen und die PComboBox rauswerfen.
Iceman007 ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 08.07.2009, 22:32   #8 (permalink)
Neuer Benutzer
Bit
Themenstarter
 
Registriert seit: 07.07.2009
Fachbeiträge: 5
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Standard Lösung für dieses Thema

Hallo zusammen,

ich kam heute durch Zufall selbst auf die Lösung und möchte sie hier nochmal kurz veröffentlichen, damit andere auch etwas davon haben.

Und zwar bietet die PComboBox eine Methode getTextField() und auf diese kann man dann den FocusListener anwenden. Im Java Code sieht das dann folgendermassen aus:

Java Code: Quelltext in neuem Fenster öffnen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
veranstaltungsDozentComboBox = new PComboBox(DB_GUI_neueBuchung
                .gibEintraege("dozent"));
        veranstaltungsDozentComboBox.setAllowNewEntries(true);
        veranstaltungsDozentComboBox.setPreferredSize(new Dimension(200, 18));
        veranstaltungsDozentComboBox.buildIndex();
        
        veranstaltungsDozentComboBox.getTextField().addFocusListener( new FocusListener(){
            public void focusGained(java.awt.event.FocusEvent arg0) {
                System.out.println("Neuer Eintrag in Dozent ComboBox focusgained");
            }
            public void focusLost(java.awt.event.FocusEvent arg0) {
                System.out.println("Neuer Eintrag in Dozent ComboBox focuslost");
            }
        };

Was mir auch aufgefallen ist, der FocusListener funktioniert bei einer normalen JComboBox auch nicht wenn setEditable(true) ist, weiß ich aber auch nicht woran das liegt, evtl kann dazu nochmal jemand was schreiben.

Hoffe mein Beitrag hilft noch jemanden irgendwann mal.

Danke trotzdem für die Hilfestellungen.
Iceman007 ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Thema geschlossen    

Stichworte
pcombobox , pcombofocuslistener , pswing

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Tic Tac Toe Layout-Sorgen kulturfenster Java Basics - Anfänger-Themen 25 24.01.2009 18:12
Listener Focus setzen sascha.java AWT, Swing, JavaFX & SWT 1 05.06.2006 21:16
Problem mit Eventhandling (Anfängerfrage) Simighourt AWT, Swing, JavaFX & SWT 12 03.06.2006 15:36
Ein ganz langes aber übersichtliches Listener Bsp. gr33b Chat - NoPaste 0 19.04.2006 08:59


Lesezeichen

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen 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.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:26 Uhr.


Powered by vBulletin® Version 3.8.6 (Deutsch)
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.2
Thanks for Smilies by smilies.4-user.de