disabled Checkbox soll trotzdem Focus bekommen

TiJay

Mitglied
Hallo Gemeinde,

habe gerade den Weg in dieses Forum gefunden, weil ich mit der Beantwortung einer Frage via Google nicht weiterkam.

Ich habe eine [c]JCheckBox[/c], welche ich via [c]setEnabled(false)[/c] deaktiviert habe. Ich hätte es aber trotzdem gerne, dass sie fokussiert werden kann.

Kann man das irgendwie auf einfachem Wege bewerkstelligen?

Oder anders gefragt: Kann man sowas ähnliches wie die aus [c]JTextComponent[/c] bekannte Methode [c]setEditable(boolean b)[/c] für [c]JCheckBox[/c]en umschreiben?

Ich bin langsam mit meinem Latein am Ende, hab schon alles mögliche versucht und wäre über Hilfe dankbar!

Liebe Grüße,
Timo
 
Im Prinzip ja.

Das hatte ich auch schon ergooglet, aber leider lässt sich das bei mir so nicht umsetzen, da ich nicht direkt auf eine JCheckBox zugreifen kann sondern auf eine andere Klasse, welche zwar eine JCheckBox im Hintergrund hat, aber nicht von ihr erbt.

Die Geschichte mit den ActionListenern funktioniert auch in meinem Fall nicht, da diese besagte andere Klasse eine weitere Form von Listenern einsetzt, die sich leider nicht entfernen lassen, bzw. entfernen lassen dürfen und ebenfalls eine Änderung wiederspiegeln.

Dennoch vielen Dank für deine Mühe!

Liebe Grüße,
Timo
 
Hallo,

danke für eure Antworten.

Interessant wäre zu wissen, warum in dem Fall der Fokus auf einer deaktiviertes Komponente benötigt wird.

In einem Panel soll jeweils ein Hilfetext zum aktuell gewählten Element dargestellt werden. Wenn eine CheckBox deaktiviert ist, kann man es nicht auswählen und daher keine Hilfe zum Element erhalten.

bin mir nicht sicher ob das so funktioniert, aber versuch mal im Listener, requestFocus für die Box aufzurufen.

In welchem Listener?
Und warum requestFocus? Diese Methode dient doch dazu, den Focus auf das Element zu lenken, oder nicht? Das möchte ich aber gerne durch Mausklicks und/oder Tabs realisieren und nicht durch einen Listener.

Gruß,
Timo
 
Wenn eine CheckBox deaktiviert ist, kann man es nicht auswählen und daher keine Hilfe zum Element erhalten.
Auswählen heißt hier nicht De/selektieren?! Wie wird denn "ausgwählt" kann man da nicht einfach einen Mouse(Motion)Listener darauf setzen und den Hilfetext anzeigen sobald der Anwender die Maus darüber bewegt oder darauf klickt?

Eventuell würde kann man die Hilfetexte ja per Tooltip anzeigen lassen und sich das Panel sparen - was ja nicht gerade unüblich ist.
 
Auswählen heißt hier nicht De/selektieren?!
Nein, der Inhalt bzw. der Wert der Checkbox sollte dabei nicht verändert werden. Wird er im Allgemeinen auch nicht, wenn man sich "durchtabbt".

Wie wird denn "ausgwählt" kann man da nicht einfach einen Mouse(Motion)Listener darauf setzen und den Hilfetext anzeigen sobald der Anwender die Maus darüber bewegt oder darauf klickt?
Das ist prinzipiell eine gute Idee, das könnte man. Es wäre bei Verwendung des Mauszeigers auch sicherlich die schönere Variante, aber ich würde mir gerne die Möglichkeit, mit der [c]TAB[/c]-Taste durch die Felder zu springen, offenhalten.
Fällt dir noch was ein?

Eventuell würde kann man die Hilfetexte ja per Tooltip anzeigen lassen und sich das Panel sparen - was ja nicht gerade unüblich ist.
In diesem Fall sind die Hilfetexte ziemlich lang, daher würde ich das Panel gerne den Tooltips vorziehen.

Aber danke für die vielen tollen Tipps, ich komme darauf zurück, wenn sich keine bessere Lösung finden lässt 🙂

Gruß,
Timo
 
also bei mir funktioniert das was ich vorgeschlagen hatte vorrausgesetzt dem im Fall, dass ich deine Frage richtig verstanden habe. Probier mal
Java:
private class KAdapter extends KeyAdapter{
		
		public void keyPressed(KeyEvent e){
			int key = e.getKeyCode();
		
			if(key == KeyEvent.VK_TAB){
				
				e.consume();
				checkBox.requestFocus();
			}
			
			if(key==KeyEvent.VK_ENTER && checkBox.hasFocus()){
				
				//tu etwas
			}
		}
	}

Diesen KeyAdapter kannst du dann deiner Checkbox zu weisen,

Java:
checkBox.addKeyListener(new KAdapter());
 
Ich finde es aber irgendwie merkwürdig, dass man eine Hilfe anzeigt, zu einer Komponente, die man eh nicht benutzen kann. Wäre es nicht besser, wenn der Benutzer die Hilfe erst dann angezeigt bekommt, wenn er auch darauf einwirken kann? Davor wäre das doch ein klassischer Fall von Information-Overflow, oder nicht?
Ich würde in Deinem Fall zwischen einer Unterstützung des Benutzers bei der Eingabe (eine Art Assistent) und einer klassischen Hilfe unterscheiden, in der man dann wirklich alle Optionen ausführlichst behandeln kann.

Das wären zumindest meine Gedanken zu der Sache. 😉
 

Zurück
Oben