Portal > Foren > Java > Desktop-Applikationen und Grafik > JComboBox - dynamic Cursor change
Antwort
 
Themen-Optionen Thema durchsuchen
Alt 06.07.2005, 16:19 Nach oben    #1
chini
Gast
 
Beiträge: n/a
Standard JComboBox - dynamic Cursor change

Hi Leute,

Ich hoffe, ihr schlauen Köpfe könnt mir weiterhelfen.
Also es geht um ne JComboBox die als CellElement ner JTable implementiert ist. Durch Selektierung eines CB-Elements (uneditable) werden ne Menge Database-Aktionen angesteuert. Da die Response ne Weile dauern kann, möchte ich während der Wartezeit den Mauszeiger in ne Sanduhr (HourGlass) verwandeln, also bis actionPerformed() durchlaufen ist.
Und genau das ist mein Problem:

Wie kann ich das Cursor-Layout steuern, während die CB-Item-Selektion abgearbeitet wird? Muss ich dafür nen eigenen Listener oder sogar n eigenes CB-Model/UI implementieren? Prinzipiell friert der Thread für mich ein und ich muss warten, bis das CB-Popup zuklappt (hidePopup()) - Mist das.

Meine vergeblichen Versuche, den ActionListener zu beeinflussen oder mit nem ItemListener bzw. PopupMenuListener zu werkeln, sind gescheitert. Sämtliche Aktionen werden erst nach dem hidePopup() umgesetzt. Ich will aber währenddessen (und zwar nur währenddessen) den MouseCursor verändern.

Falls erwünscht, kann ich auch n paar Code-Auszüge nachreichen.

Vielen Danke im Voraus,
Chini
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.07.2005, 17:12 Nach oben    #2
Sesselkleber
 
Benutzerbild von sparrow
 
Registriert seit: 17.01.2005
Beiträge: 582
Standard

Wenn ich das richtig verstehe feuer das Selektieren eines Elements der CB ein Event ab, richtig?
In diesem Event wirder dann die Datenbankabfragen durchlaufen.

Warum verwandelst du den Mauszeiger nicht einfach als allererstees innerhalb dieses Events in einen Mauszeiger und ganz am Ende wieder zurück. Da du kein Multithreading einsetzt wird der Code doch pro Methode linear abgearbeitet.

Wenn ich dich falsch verstanden habe würde ein bisschen Code (die betreffenden Stellen) weiterhelfen.

Gruß
Sparrow
sparrow ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.07.2005, 17:47 Nach oben    #3
chini
Gast
 
Beiträge: n/a
Standard

Danke für die schnelle Antwort,

die DB-Actions sind eigentlich nicht weiter wichtig. Das DB-Resultset füllt letztendlich die JTable mit Werten.

Was ich nicht hinbekomme, ist, dass das CB-Model GUI-Anpassungen entgegennimmt, und zwar:
nachdem ein CB-Item mit der Maus angeklickt wurde, aber bevor die Combobox zuklappt.

Bsp: Ich setze in actionPerformed()... u.a. einen anderen CursorStyle, wie folgt:

PHP-Code:
public class ComboBoxDemo extends JPanel
implements PopupMenuListenerActionListenerItemListener 
    
JComboBox cb null;    
    final 
Cursor cross = new Cursor(Cursor.CROSSHAIR_CURSOR);
    final 
Cursor normal = new Cursor(Cursor.DEFAULT_CURSOR);
 
    public 
ComboBoxDemo() {
        
super(new BorderLayout());
        
String[] items = { "Item1""Item2""Item3"}:         
        
cb = new JComboBox(items);
        
cb.setSelectedIndex(1);
        
cb.addItemListener(this);
        
cb.addPopupMenuListener(this); 
        
cb.addActionListener(this);
 
public 
void actionPerformed(ActionEvent e) {
    
// sobald ein Item selektiert wurde...
    
cb.setCursor(cross);
    
// sonst 
    
cb.setCursor(normal);
    
// ...
}
 
// die folgenden Listener-Methoden helfen mir leider auch nicht weiter
public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {}
 
public 
void popupMenuWillBecomeVisible(PopupMenuEvent e) {}
 
public 
void itemStateChanged(ItemEvent e) {}
 
...
 

Es scheint, dass CB-ActionEvents erst nach dem (implizitem) Schliessen des Popups (hidePopup()) ausgeführt werden, ich muss aber den Cursor setzen, während das Popup NOCH offen steht.

Was ich also bräuchte, ist ne Art ItemSelectionListener, der aktiv wird vor dem ActionListener.

Ich hoffe, das Problem ist nun etwas deutlicher geworden.

Gruss und Danke für die tolle Hilfe,
Chini
 
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 06.07.2005, 19:33 Nach oben    #4
Sesselkleber
 
Benutzerbild von sparrow
 
Registriert seit: 17.01.2005
Beiträge: 582
Standard

Hmmm... scheit so als hättest du recht.
Der ActionListener wird zwar aufgerufen sobald man klickt (und nicht erst wenn das Menu zugeklappt ist), aber ein Update der GUI erfolgt er wenn die Action ausgeführt wurde.

Die einzige Möglichkeit die mir einfällt um das hinzubekommen ist, dass die action-Methode einen neuen Thread startet der die Arbeit übernimmt.

Ob das klappt weiß ich aber nicht.
sparrow ist offline  
Diesen Beitrag zu to del.icio.us hinzufügen!Diesen Beitrag zu Technorati hinzufügen!Diesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche

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

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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Dynamic Tables With XLST Ben Plauderecke 3 08.01.2006 21:14
JComboBox in JTable J0y Desktop-Applikationen und Grafik 0 08.09.2005 15:37
JComboBox mit eigenem ListCellRenderer... matt Desktop-Applikationen und Grafik 2 14.07.2005 20:38
JComboBox in JToolBar wird verdeckt?? matt Desktop-Applikationen und Grafik 5 06.07.2005 18:47
JcomboBox dynamisch taskin73 Allgemeine Java-Programmierung 4 06.07.2005 14:13


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


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45