ButtonGroup + JToggleButton &;nbsp]

Status
Nicht offen für weitere Antworten.
O

~Olli

Gast
mir ist eine sache nicht klar.
wenn ich in einer buttongroup zwei toggle button habe, wie kann ich dann bei erneutem klick den selektieren button
wieder auf "nicht selektiert" bringen ?
ich probiere im actionlistener was ich will...setselected.. setpressed...getselected....gääähn.
nix klappt.
 

VuuRWerK

Aktives Mitglied
Da müsstest Du Dir mal die Checkbox anschauen wie diese umgesetzt ist, diese ist vom JToggleButton abgeleitet und da ist ja Deine gewünschte Funktionalität eingebaut.

Gut Schuß
VuuRWerK ;)
 

kleiner_held

Top Contributor
So wie ich es verstehe willst du das Verhalten einer ButtonGroup (es kann nur ein ButtonModel selektiert sein) aber zusaetzlich willst du noch die Moeglichkeit, beim Kilck auf den gerade selektierten ToggleButton diesen wieder zu deselektieren. In diesem Fall waere dann keines von den ButtonModels selektiert.

Ich hatte diesen Fall mal und habe mir dafuer eine eigene ButtonGroup geschrieben - hat zwar bisschen was von einem Hack aber was solls.

Code:
public class UnselectableButtonGroup extends ButtonGroup
{
		private static final long serialVersionUID = 1L;
		
		/** the internal hidden defaultModel */
		private ButtonModel defaultModel;
		
		/**
		 * Default constructor.
		 */
		public UnselectableButtonGroup()
		{
			super();
			defaultModel = new DefaultButtonModel();
			super.setSelected(defaultModel, true);
		}
		
		@Override
		public void setSelected(ButtonModel m, boolean b)
		{
			if (!b && m == super.getSelection())
			{
				super.setSelected(defaultModel, true);
			}
			else
			{
				super.setSelected(m, b);
			}
		}
		
		@Override
		public ButtonModel getSelection()
		{
			ButtonModel selection = super.getSelection();
			if (selection == defaultModel)
			{
				return null;
			}
			else
			{
				return selection;
			}
		}
		
		/**
		 * Set all buttons to unselected.
		 */
		public void deselectAll()
		{
			super.setSelected(defaultModel, true);
		}
}
 
O

~Olli

Gast
ja genau, so wie das letzte beispiel hatte ich mir das vorgestellt. allerdings kapier ich den code
nicht so wirklich :-/

genau so bräuchte ich das, aber ich kapier den code nicht so richtig :

Code:
 if (!b && m == super.getSelection())
         {
            super.setSelected(defaultModel, true);
         }
???:L ???:L
 

kleiner_held

Top Contributor
Du ersetzt in deinem Code die originale ButtonGroup durch diese UnselectableButtonGroup.

In der originalen ButtonGroup ist die Methode setSelected(ButtonModel m, boolean b) so implementiert, das nur etwas passiert, wenn b = true ist. In dem Fall wird das übergebene ButtonModel selektiert und das vorher selektierte deselectiert. Bei b = false passiert gar nichts.
Die von mir geänderte Implementierung setzt da an: wenn b = false ist und das übergebene ButtonModel dem aktuell selektierten entspricht, dann wird der Superklasse gesagt, jetzt das DefaultModel zu selektieren - mit dem oben beschriebenen Verhalten.
 
O

~Olli

Gast
ok, ich glaub so langsam raff ich das. es werden quasi 2 buttonmodels benutzt und damit "jongliert". crazy ;)
danke.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Anhand ButtonGroup eine Auswahl treffen AWT, Swing, JavaFX & SWT 2
B ButtonGroup mit mehr als einer Selection AWT, Swing, JavaFX & SWT 2
M Klassenzugriff ButtonGroup AWT, Swing, JavaFX & SWT 3
S ButtonGroup AWT, Swing, JavaFX & SWT 2
W ButtonGroup, Checkbox, A oder B oder gar nix AWT, Swing, JavaFX & SWT 3
K Auswahl einer ButtonGroup erfahren AWT, Swing, JavaFX & SWT 3
V ButtonGroup einfacher überwachen? AWT, Swing, JavaFX & SWT 7
M Listener an ButtonGroup AWT, Swing, JavaFX & SWT 2
S ButtonGroup auswerten AWT, Swing, JavaFX & SWT 5
S ButtonGroup übergeben! AWT, Swing, JavaFX & SWT 3
G JCheckbox Buttongroup Problem AWT, Swing, JavaFX & SWT 7
F ButtonGroup funktioniert nicht ! AWT, Swing, JavaFX & SWT 3
O ButtonGroup einem JPanel hinzufügen?! AWT, Swing, JavaFX & SWT 4
C JToggleButton disabled Text Color AWT, Swing, JavaFX & SWT 11
Paul15 JCheckBox und JToggleButton AWT, Swing, JavaFX & SWT 5
P Swing JToggleButton Links- und Rechtsklick AWT, Swing, JavaFX & SWT 4
T Swing JToggleButton Zustand AWT, Swing, JavaFX & SWT 2
E JToggleButton automatisch nach drücken loslassen AWT, Swing, JavaFX & SWT 3
V Swing Custom JToggleButton in JTable - Click-Event geht erst beim zweiten Mal AWT, Swing, JavaFX & SWT 7
kodela Swing JToggleButton und Tastatur AWT, Swing, JavaFX & SWT 2
P Swing JComboBox mit JToggleButton kombinieren AWT, Swing, JavaFX & SWT 4
C ausgewählte JtoggleButton als Variablenwert ausgeben AWT, Swing, JavaFX & SWT 14
B JToggleButton und StyledEditorKit.ItalicAction() AWT, Swing, JavaFX & SWT 2
P JToggleButton AWT, Swing, JavaFX & SWT 6
M Swing Selektion mehrerer JToggleButton's in einer Gruppe AWT, Swing, JavaFX & SWT 5
K JToggleButton deaktivieren (komplettes event nehmen) AWT, Swing, JavaFX & SWT 2
C Swing JToggleButton und Icon AWT, Swing, JavaFX & SWT 2
G JToggleButton - Hintergrundfarbe beim Drücken festlegen AWT, Swing, JavaFX & SWT 4
G JToggleButton pressed geht nicht AWT, Swing, JavaFX & SWT 2
gieser jToggleButton: Text unter Bild AWT, Swing, JavaFX & SWT 2
F JToggleButton in AWT umsetzen (Button soll stecken bleiben) AWT, Swing, JavaFX & SWT 4
G JToggleButton AWT, Swing, JavaFX & SWT 6
G welcher Jtogglebutton geklickt? AWT, Swing, JavaFX & SWT 3
G JToggleButton mit Bild AWT, Swing, JavaFX & SWT 6
S Zweidimensionales Array - JToggleButton AWT, Swing, JavaFX & SWT 3
E JToggleButton Zustandsänderung AWT, Swing, JavaFX & SWT 4
M JToggleButton immer nur einen aktivieren AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben