2010-12-31 8 views
4

Ich (sehr wunderbarerweise) beantwortete meine eigene Frage beim Schreiben dieser Frage, aber es war so ein Fund, den ich mit allen teilen wollte. Ich verstehe, dass dies wahre "Fragen" sein sollten, aber es war ein monumentaler Fund für mich. Es gibt jedoch eine "Frage", die beantwortet werden kann.Manipulation eines JToggleButtons ImageIcon während gedrückt/ausgewählt

Ich habe eine benutzerdefinierte Klasse erstellt, die einen JToggleButton erweitert. In dieser Klasse entferne ich alle standardmäßigen MouseListeners, sodass nur Mausaktionen akzeptiert werden, wenn das Objekt bereit ist. Das Problem, das ich hatte, war die Manipulation der JToggleButtons ImageIcon (Set mit SetIcon()). Wenn die Schaltfläche nicht auf dem Bildschirm angezeigt wurde (nicht sichtbar aufgrund eines JScrollPane), wenn ich die Schaltfläche zum Auswählen anwählte, würde die ImageIcon verschwinden. Wenn ich die ImageIcon änderte, während die Schaltfläche ausgewählt war, würde die ImageIcon ebenfalls verschwinden.

Es stellt sich heraus, dass ich in meinem benutzerdefinierten MouseListener getModel.setSelected (true) anstelle von getModel.setPressed (true) verwendet habe. Offensichtlich habe ich kein klares Verständnis für den Unterschied zwischen ausgewählt und gedrückt, aber es genügt zu sagen, dass dies mein Problem behoben hat. Meine "Frage" wäre daher eine Klarstellung zu diesen beiden Bedingungen.

Um zusammenzufassen, verwenden Sie nicht setSelected() auf einer Taste, wenn Sie setPressed zu verwenden, bedeutet(). Was für ein Schmerz, diesen hier zu verfolgen! Ich hoffe aufrichtig, dass dies jemand anderem hilft. E-Mail ist gültig, aber ein Spam-Catcher.

+0

Siehe auch http://download.oracle.com/javase/6/docs/api/javax/swing/ButtonModel.html – trashgod

+0

Danke ... das war es, was ich in erster Linie SetPressed fand, aber nach dem suchen ein zweites Mal habe ich einen kleinen Schimmer des Verständnisses bekommen, indem ich auf isSelected geschaut habe (die gleichen Informationen werden nicht für getSelected oder setSelected angeboten). –

Antwort

2

Ok, ich fand meine eigene Antwort wieder, also dachte ich, ich würde diese Frage teilen und schließen. Eine Schaltfläche ist "ausgewählt", wenn sie ein Kontrollkästchen/Radio-Symbol hat. Eine Schaltfläche wird "gedrückt", wenn die Schaltfläche gedrückt wurde. JToggleButtons scheinen beide Attribute in Kombination zu verwenden, um ordnungsgemäß auf die Schaltfläche zu klicken und sie zu drücken.

Der Grund für das Verschwinden der ImageIcons war, dass ich versehentlich setPressedIcon()/setPressed() und setSelectedIcon()/setSelected() gemischt hatte. Da ich die Terminologie verwechselt hatte und den Unterschied nicht erkannte, war ich inkonsistent.