JList - merkwürdiges Verhalten bei Leertaste (unter Focus)

Status
Nicht offen für weitere Antworten.
K

kceenav

Gast
Schönen Tag allerseits -

in meinem bereits etwas umfangreicheren Programm verwende ich eine JList zur Anzeige aller Monatsnamen. Der Benutzer soll daraus zur Bestimmung eines Kalenderdatums eine Auswahl treffen. Als Listener habe ich lediglich den üblichen ListSelectionListener registriert - sonst nichts.

Und nun das Problem:
Wenn das JList-Element den Focus hat, erfolgt bei Betätigung der Leertaste ein Inkrementieren des selektierten Monats ... Wobei lustigerweise 4 Monate stets übersprungen werden.
Noch zur näheren Erläuterung: Die Einträge sind in 6 Spalten auf 2 Zeilen verteilt. Es ist natürlich nur Single-Selection vorgesehen. Übersprungen werden die Monate in den ersten beiden Spalten (links).

Dass die JList bereits von Hause aus - ohne weiteren Codier-Aufwand - auf bestimmte Tastaturbefehle reagiert, ist wohl normal. Z.B. kann man mit den Pfeiltasten die Auswahl wechseln.
Die Reaktion auf die Leertaste jedoch scheint mir nicht erklärlich. Ich habe schon ein wenig 'rumprobiert mit einer "jungfräulichen" JList in einem winzigen Test-Fenster - und da bewirkt die Leertaste nichts. Was ja auch sinnvoll ist ...

Hier noch die paar Anweisungen, mit denen die JList festgelegt wird:
jlMonate.setLayoutOrientation(JList.HORIZONTAL_WRAP);
jlMonate.setVisibleRowCount(2);
jlMonate.setFont(new Font("SansSerif",Font.ITALIC,12));
jlMonate.setBorder(BorderFactory.createLineBorder(Color.BLACK));
jlMonate.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
jlMonate.setSelectedIndex(monatSelektiert);
jlMonate.addListSelectionListener(monatsListener);

Wäre toll, wenn jemand eine Idee beisteuern könnte, wo ich im Programm einen Fehler (?) eingebaut habe. Dass es ein Fehler sein muss, scheint mir offensichtlich, da sich ja andere JLists nicht so verhalten ...

Danke im voraus!

Gruß,
kceenav
 
K

kceenav

Gast
@mic_checker -

zunächst Danke für die Antwort. Diese hilft mir allerdings nicht weiter - falls sich irgendwo in dem SUN-Tutorial ein spezifischer Hinweis auf die Lösung meines Problems findet und Du davon weißt, wäre es nett, den Abschnitt genauer einzugrenzen ...
Ansonsten muss ich leider zugeben, dass mir englischsprachige Texte nicht so unmittelbar verständlich sind, dass ich mir mit ihnen besonders gut zu helfen wüsste. Ich verstehe zwar gar nicht so schlecht Englisch, aber irgendwie bleibt doch vieles eher undeutlich - ist nunmal so. Erst recht, wenn es sich um einen Thematik handelt, die schon für sich betrachtet nicht ganz unkompliziert ist (aus meiner Sicht jedenfalls..). Andernfalls hätte ich die Lösung wahrscheinlich schon in der API gefunden, die ich grundsätzlich gerne heranziehe. Meistens reicht das ja auch schon.
Wer hier eine Frage postet, erwartet im Übrigen sicher in der Regel mehr als nur den Verweis auf anderweitige - und umfangreiche.. - Texte ...

Wenn also sonst noch jemandem etwas zu meiner Frage einfällt - nur raus damit! Besonders natürlich, wenn's sich um konkrete (!) Hinweise handelt ...

Gruß
kceenav
 

Sky

Top Contributor
kceenav hat gesagt.:
Wenn das JList-Element den Focus hat, erfolgt bei Betätigung der Leertaste ein Inkrementieren des selektierten Monats ... Wobei lustigerweise 4 Monate stets übersprungen werden.
Hä??
http://de.wikipedia.org/wiki/Inkrementieren hat gesagt.:
Inkrement (von lat. incrementare: vergrößern) und Dekrement (von lat. decrementare: vermindern) sind insbesondere in der Mathematik und Programmierung (Informatik) Begriffe für die Erhöhung bzw. Verringerung eines numerischen Wertes.
Sind deine Monate als Numerische Wert mit einem entsprechendem Renderer hinterlegt!?!? Oder wie ist das inkrementieren zu verstehen?

Das heißt zunächst steht in deiner JList:
Code:
JAN FEB MÄR APR MAI JUN
JUL AUG SEP OKT NOV DEZ
und sagen wir JAN ist ausgewählt. Nun wird durch Klick auf die Leertaste der selektierte Monat inkremtentiert und dein Ergebnis sieht so aus (JAN wurde zu JUN, weil 4 überspungen beim inkrementieren):
Code:
JUN FEB MÄR APR MAI JUN
JUL AUG SEP OKT NOV DEZ
Das ist keine Standard-Funktionalität in JAVA! Das heißt der Fehler muss in deinem Code liegen... poste mal mehr von deinem code.

Wenn's das nicht ist, so versuche mal deine Frage verständlich zu formulieren!
 

mic_checker

Top Contributor
Kannst auch vielleicht mal deinen Code posten?

Also wenns net zu viel ist hier oder halt irgendwo auf Webspace hochladen...

Bei mir macht er das mit dem Leerzeichen nämlich net so wie du beschrieben hast...(mit nem andern JList Source)
 
K

kceenav

Gast
Hallo,

okay, ich weiß die Bemühungen wirklich zu schätzen, Danke.

Also mit "inkrementieren" meinte ich den ausgewählten Monat. Es ist immer einer selektiert, beim Start der aktuelle Monat.
Die JList hat tatsächlich den Aufbau wie oben als "Code" angedeutet. Wenn nun z.B. März selektiert ist, ich dann die Leertaste drücke, springt die Selektion zum April - usw.
Ich habe ja schon selber herausgefunden, dass dieses Verhalten kein Standard einer JList ist, folglich gehe ich allerdings auch davon aus, dass der Fehler irgendwo von mir verursacht wird. Da es aber offenbar nichts mit der anfänglichen Einrichtung im Konstruktor zu tun hat, der besagte SelectionListListener ebenfalls als Quelle des Übels ausscheidet (Deaktivieren ändert nämlich nichts an dem Leertasten-Problem), wüsste ich momentan echt nicht, an welcher Stelle in einigen tausend Zeilen Code sinnvollerweise noch gesucht werden könnte ...
Ist zweifellos auch von jedem anderen zu viel verlangt, sich darein zu vertiefen, deshalb geht das mit dem Posten des Quellcodes wohl nicht ... Der infragekommende Bereich ist auf jeden Fall zu umfangreich.

Ich hatte nur gehofft, es könnte ein Problem sein, das schon mal jemand anderem begegnet ist. Wahrscheinlich liegt die Ursache aber in meinem ganz speziellen Programm - irgendwo habe ich eben einen (ziemlich dussligen) Fehler eingebaut. Ich hoffe jetzt einfach mal, dass ich ihn früher oder später schon selber finden werde.

Also zunächst mal vielen Dank für die Hilfestellung!

Gruß
kceenav
 

mic_checker

Top Contributor
In was für einer Größenordnung befindet sich denn die Größe deines Progs? Ansonsten könnte ich mal gucken ob ich drüber gucken kann, ohne Gewähr natürlich ;)
 
K

kceenav

Gast
Hallo

@mic_checker: Danke noch für das Angebot, den Code zu (mic_)checken.
Zuerst sah ich jedoch nach wie vor keine Möglichkeit, den Bereich sinnvoll einzugrenzen auf ein akzeptables Maß.

Und dann bin ich des Nachts selber auf die Erklärung gekommen ...
Tatsächlich war natürlich mein Code für das beschriebene Phänomen mit der Leertaste verantwortlich. Ich hatte nämlich vor Wochen beim Zusammenbasteln der JList das "Layout" auf einfache Weise "verschönert", indem ich bei einigen Monatskürzeln ein Leerzeichen vorangestellt habe ... !
Hatte ich in der Zwischenzeit wieder vergessen. Und folglich kam ich lange nicht auf die richtige Idee für die Fehlerursache.
Zum Standardverhalten der JList gehört es eben auch, wenn sie den Eingabefocus hat auf die Tastatureingabe von Zeichen (einschl. Leerzeichen..) zu reagieren, indem in den nachfolgenden Einträgen (nach dem momentan selektierten) nach einem gesucht wird, der mit diesem Zeichen beginnt. Sobald einer gefunden wird, wird er sofort selektiert.

So kann's gehen ... ;-)

Danke für die Hilfestellung an alle Beteiligten, viele Grüße

kceenav
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
pinerski Swing JList merkwürdiges Verhalten beim sortieren AWT, Swing, JavaFX & SWT 3
B Jlist füllen AWT, Swing, JavaFX & SWT 4
H JList.setEnabled(false) - Text soll nicht grau sein AWT, Swing, JavaFX & SWT 2
BananenBrötchen Swing Arraylist in jList anzeigen AWT, Swing, JavaFX & SWT 6
J Swing JList wird nicht angezeigt AWT, Swing, JavaFX & SWT 6
A Swing JList zu JTree AWT, Swing, JavaFX & SWT 11
G Eingabe in JTextField in Array speichern und in JList ausgeben AWT, Swing, JavaFX & SWT 7
cezary Choice, JComboBox oder JList AWT, Swing, JavaFX & SWT 5
J JList scrollen AWT, Swing, JavaFX & SWT 3
Neumi5694 Swing JList - Klick abfangen AWT, Swing, JavaFX & SWT 3
G Swing Swing Binding JList funktioniert nicht AWT, Swing, JavaFX & SWT 5
M Swing JList Auswahl-GUI-Konzept AWT, Swing, JavaFX & SWT 9
C JList: Bestimmte Objekte ausschließen AWT, Swing, JavaFX & SWT 1
F JList aktualisiert nicht AWT, Swing, JavaFX & SWT 24
F JList auffüllen aus Array von Instanzen AWT, Swing, JavaFX & SWT 4
F Event wenn Maus eine JList verlässt AWT, Swing, JavaFX & SWT 13
F JList bei Windowbuilder AWT, Swing, JavaFX & SWT 8
F JList zeigt keine Einträge mehr AWT, Swing, JavaFX & SWT 1
P JList erstellen AWT, Swing, JavaFX & SWT 4
G DefaultListModel für JList AWT, Swing, JavaFX & SWT 2
P Einer JList mit eigenem ListModel einen Eintrag hinzfügen AWT, Swing, JavaFX & SWT 5
P Übergeben von ListModel an nichtparametrisierte JList AWT, Swing, JavaFX & SWT 8
M Ein Element in mehreren JList selektieren AWT, Swing, JavaFX & SWT 5
J Swing Probleme mit ListSelectionListener(), Inhalte der JList werden gelöscht? AWT, Swing, JavaFX & SWT 6
Z Swing Variable eines Objekt aus Hashmap in JList anzeigen AWT, Swing, JavaFX & SWT 1
Nabbit Über JList kein JPopupMenu AWT, Swing, JavaFX & SWT 2
O Swing JList beim Klicken in der GUI erstellen AWT, Swing, JavaFX & SWT 6
C Swing JList zeigt keine neuen Einträge an AWT, Swing, JavaFX & SWT 1
B Swing Auf JList-Elemente aus einer anderen Klasse zugreifen AWT, Swing, JavaFX & SWT 1
T Generische Klasse in JList über DefaultListModel AWT, Swing, JavaFX & SWT 1
T Swing WindowBuilder: JList wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
C Button Text in JList neue Zeile AWT, Swing, JavaFX & SWT 6
C Hilfe bei JSpinner und JList AWT, Swing, JavaFX & SWT 1
D Swing ArrayList in Jlist/ List oder Array in JList/List AWT, Swing, JavaFX & SWT 5
S JList ist leer, aber DefaultListModel hat die Daten? AWT, Swing, JavaFX & SWT 9
M JList wird angezeigt, JTable (DefaultTableModel) nicht AWT, Swing, JavaFX & SWT 7
H Swing JList/JTable mit JButton, JTextField, Image, JComboBox und JLable AWT, Swing, JavaFX & SWT 2
D Swing Jlist Größe während der Laufzeit verändern. AWT, Swing, JavaFX & SWT 11
Q JList Update Problem AWT, Swing, JavaFX & SWT 1
W Sichtbarer Bereich JScrollPane vs. JList AWT, Swing, JavaFX & SWT 3
N AWT Markierte Zeile jList aus mySQL DB löschen AWT, Swing, JavaFX & SWT 2
S JList repaint AWT, Swing, JavaFX & SWT 1
F Swing JTextField in JList (Funktion beibehalten) AWT, Swing, JavaFX & SWT 2
H JList AWT, Swing, JavaFX & SWT 5
B Swing Bild von Webseite herunterladen, diese dann in JList anzeigen. AWT, Swing, JavaFX & SWT 1
B Swing Dynamische JList mit Bildern AWT, Swing, JavaFX & SWT 4
D JList&JButton erst nach Resize des JFRame sichtbar AWT, Swing, JavaFX & SWT 2
S JList Index finden AWT, Swing, JavaFX & SWT 6
3 Swing JList-Inhalt als verschlüsselte Datei schreiben und lesen AWT, Swing, JavaFX & SWT 1
N JComponenten in JList oder doch anders? AWT, Swing, JavaFX & SWT 0
S Swing JList, ArrayList + DefaultModel AWT, Swing, JavaFX & SWT 5
B Tabelleneinträge in JList anzeigen AWT, Swing, JavaFX & SWT 5
P JList/JScroolPane Text verschieben und text wrappen AWT, Swing, JavaFX & SWT 3
D Swing JList keine Selektionsänderung bei "dragged-Maus" AWT, Swing, JavaFX & SWT 4
M JList Model filtern AWT, Swing, JavaFX & SWT 4
K Swing JList - Element richtig hinzufügen AWT, Swing, JavaFX & SWT 4
T Swing Elemente der JList überlappend darstellen AWT, Swing, JavaFX & SWT 5
P Swing JList mit Objekten - Name anzeigen AWT, Swing, JavaFX & SWT 5
Ollek JList - neuer Eintrag in ArrayList dadurch keine Anzeige der Objekte AWT, Swing, JavaFX & SWT 18
K Mehrfachselektierungen in einer JList AWT, Swing, JavaFX & SWT 6
L Swing Component alignment innerhalb einer JList AWT, Swing, JavaFX & SWT 3
M Swing JList Listener AWT, Swing, JavaFX & SWT 20
M Accelerator zu JMenuItem des JPopupMenu einer JList AWT, Swing, JavaFX & SWT 2
S Swing JList wird nicht angezeigt AWT, Swing, JavaFX & SWT 3
M Element aus JList eines JFileChooser entfernen AWT, Swing, JavaFX & SWT 3
E selektierter Datensatz in JList als String Datentyp AWT, Swing, JavaFX & SWT 23
E selektiertes Element aus JList zurückgeben AWT, Swing, JavaFX & SWT 7
E JList /DefaultListModel mit Datenbank verbinden AWT, Swing, JavaFX & SWT 10
L SQL & Jtable o. JList AWT, Swing, JavaFX & SWT 5
K Swing JList und veränderte CellRenderer AWT, Swing, JavaFX & SWT 8
B JList + ListCellRenderer AWT, Swing, JavaFX & SWT 5
B JList -> Disabled AWT, Swing, JavaFX & SWT 6
J JList, Anzeige aktualisieren AWT, Swing, JavaFX & SWT 7
I Jlist isselectionEmpty AWT, Swing, JavaFX & SWT 4
I Jlist dynamisch aus Datenbank füllen AWT, Swing, JavaFX & SWT 14
R Swing unbegrenzte Anzahl vonEinträgen in JList AWT, Swing, JavaFX & SWT 2
MiMa Dateien aus Ordner in einer JList Ausgeben AWT, Swing, JavaFX & SWT 32
P Elemente einer JList ausgeben AWT, Swing, JavaFX & SWT 11
M JList mit 2-zeiligen Objekten füllen AWT, Swing, JavaFX & SWT 7
S JList mit Einträgen versehen schlägt fehl AWT, Swing, JavaFX & SWT 4
F Swing ArrayList in JList anzeigen und Objekte auswählen AWT, Swing, JavaFX & SWT 2
B JList zeigt Elemente nicht an AWT, Swing, JavaFX & SWT 3
S Fragen zu JList AWT, Swing, JavaFX & SWT 3
B Aktualisierung einer JList AWT, Swing, JavaFX & SWT 5
W JList valueChanges weiterleiten? AWT, Swing, JavaFX & SWT 14
D JButton-Click in JList mit Panels (auf dem der Button ist) AWT, Swing, JavaFX & SWT 6
E Jlist nur mit Klasse? AWT, Swing, JavaFX & SWT 5
D Swing JList <-> AdapterModel <-> Model AWT, Swing, JavaFX & SWT 4
1 JList - Elemente mit rechter Maustaste wählen AWT, Swing, JavaFX & SWT 6
M JList mit DefaultListModel und listener AWT, Swing, JavaFX & SWT 4
B JList nach dem Rendern sortieren AWT, Swing, JavaFX & SWT 3
T Wie ist das "Lookup-Verhalten" von JList, JCombobox änderbar? AWT, Swing, JavaFX & SWT 4
D JList items voneinander trennen AWT, Swing, JavaFX & SWT 10
E Keine Ausgabe von JList bei drücken von Button auf die Konsole AWT, Swing, JavaFX & SWT 7
M gleiches Element in JList mehrmals hintereinander auswählen AWT, Swing, JavaFX & SWT 6
T JList und Objekte AWT, Swing, JavaFX & SWT 7
M Swing JList Item in andere JList während Ausführung AWT, Swing, JavaFX & SWT 4
V JList filtern AWT, Swing, JavaFX & SWT 6
GianaSisters jList nur einmal ein Element anklicken AWT, Swing, JavaFX & SWT 3
TheWhiteShadow JList-Inhalt nach Änderung weg AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben