# ausgewählte JtoggleButton als Variablenwert ausgeben



## Ci (28. Jun 2011)

Hallo,

hab in meiner Oberfläche einige Textfelder. Den eingegeben Wert packe ich in eine Variable und lade den Wert später in meine Datenbank


```
public static JFormattedTextField txtFHersteller;
public static String hersteller = null;
.
.
hersteller = txtFHersteller.getText();
```

...so mach ich das bei einem Textfeld. jetzt hab ich eine Gruppe für meine JToggleButtons angelegt. Damit ich immer nur eins auswählen kann. nun will ich das ausgewählte in eine Variable packen, damit ich nachher genauso vorgehen kann wie bei meinem Textfeld.

Wie stell ich das am besten an?!

mein bisheriger Code:


```
public static ButtonGroup modultyp= new ButtonGroup();
public static String modulTYP = null;
.
.
modulTYP = modultyp.getText();
```

aber die letzte Zeile,also
	
	
	
	





```
modulTYP = modultyp.getText();
```
 wird schon rot markiert von Eclipse  ist auch klar, da das ja kein Textfeld ist. Aber wie funktioniert das für mein JToggleButton?

jmd. ne Idee?

gruß


----------



## Marco13 (28. Jun 2011)

modultyp ist ja auch die ButtonGroup, und nicht der Button selbst!? 

Beschreib' mal genauer, was du meinst (aber schau vielleicht mal, ob http://www.java-forum.org/bilder-gui-damit-zusammenhaengt/49255-componenten-listener.html schon hilft...)


----------



## Ci (28. Jun 2011)

hab jetzt die Idee, den ausgewählten Button, der ja eine Variable besitzt, einfach in ein Textfeld auszugeben. So kann ich ja dann in mein Textfeld greifen und den Wert in die Datenbank laden.

hier mal die wichtigsten Komponenten:


```
public static JToggleButton toggleButton_1 = new JToggleButton("1"); // 1 ist der Name für diesen Button
	public static JToggleButton toggleButton_2 = new JToggleButton("2");
	public static JToggleButton toggleButton_3 = new JToggleButton("3");
	public static JToggleButton toggleButton_4 = new JToggleButton("4");
	public static JToggleButton toggleButton_5 = new JToggleButton("5");
	public static JToggleButton toggleButton_6 = new JToggleButton("6");
	public static JToggleButton toggleButton_7 = new JToggleButton("7");
.
.
public static ButtonGroup modultyp= new ButtonGroup();
.
.
JFormattedTextField formattedTextFieldModultyp = new JFormattedTextField();
```

wie bekomme ich jetzt den Namen von meinem Button "1" in mein Textfeld?


----------



## Marco13 (28. Jun 2011)

Marco13 hat gesagt.:


> Beschreib' mal genauer, was du meinst (aber schau vielleicht mal, ob http://www.java-forum.org/bilder-gui-damit-zusammenhaengt/49255-componenten-listener.html schon hilft...)


nt


----------



## Ci (29. Jun 2011)

Die Idee oben ist kacke, hab mal wieder nicht nachgedacht! 

Aber die aufgeführten Codezeilen oben,  sind das was ich bisher für meine Buttons hab. Von den sieben Buttons kann ich ja immer nur einen auswählen. Jetzt muss man doch den Wert des Buttons irgendwie greifen können um damit arbeiten zu können oder nicht?!


----------



## Michael... (29. Jun 2011)

Ci hat gesagt.:


> Jetzt muss man doch den Wert des Buttons irgendwie greifen können um damit arbeiten zu können oder nicht?!


Mal abgesehen davon, was der "Wert" eines Buttons ist, gibt es mehrere Möglichkeiten. z.B.:
- die Buttons in ein Array/ eine Liste packen und bei Bedarf darüber iterieren und mit isSelected() prüfen welcher Button selektiert ist
- den Buttons einen ActionCommmand zuweisen, um diesen bei Bedarf über ButtonGroup#getSelection().getActionCommand() zu erfragen.


----------



## Ci (29. Jun 2011)

Nun, meine Buttons sind beschriftet von 1-7. Je nachdem, welcher Button ausgewählt ist, will ich dann die Zahl speichern. bringt mir dieser Link was? http://www.java-forum.org/bilder-gui-damit-zusammenhaengt/49255-componenten-listener.html

gruß


----------



## Michael... (29. Jun 2011)

Ci hat gesagt.:


> bringt mir dieser Link was? http://www.java-forum.org/bilder-gui-damit-zusammenhaengt/49255-componenten-listener.html


Grundsätzlich ja ;-)
Für Deine Anforderung nur bedingt.
Mittels der in Möglichkeit 2 beschriebenen Vorgehensweise könnte man sich den zuletzt selektierten Button bzw. den relevanten Wert in einer Variablen speichern.

Ich persönlich würde in diesem Fall aber eher meine Variante mit dem ActionCommand anwenden.


----------



## Ci (29. Jun 2011)

hmm...ok

hast du vllt. noch ein Beispiel zu ActionCommand, damit ich einen Vergleich machen kann?


----------



## Marco13 (29. Jun 2011)

Du kannst mit ButtonGroup (Java Platform SE 6) auch den aktuell ausfwählten Button (bzw. dessen Modell) holen, aber solange du nicht genauer beschreibst, was du vorhast, bringt das vielleicht nichts.


----------



## Ci (29. Jun 2011)

verusch jetzt mal mein Problem genauer zu beschreiben:

Nun, ich hab sieben JTogglButtons, jeder Button hat ein Icon. Auf den sieben Icons sind verschieden Obstsorten dargestellt. Der Benutzer der Oberfläche muss jeden Tag eine Obstsorte essen (wenn er mehr isst, ist es hier irrelevant, er soll einfach nur eins auswählen). Also muss er jetzt den richtigen Button anklicken. Beispiel:

Er klickt auf den "Apfel" Button. 
jetzt möchte ich den String in meine Datenbank hinterlegen.

Also hab ich ja die sieben Buttons in eine *ButtonGroup* zugewiesen, damit immer nur ein Button ausgewählt werden kann!

ich weiss wie ich in Textfeldern den Inhalt auslesen und per SQL in die DB speichern kann.
Nur weiss ich leider nicht genau wie ich das mit der CheckboxGroup mache! 

hoff das Problem ist einigermassen gut rübergekommen.

bin so lansgsam am verzweifeln


----------



## Marco13 (29. Jun 2011)

Das ist immernoch etwas schwammig, und ich hab' keine Ahnng was diese TextFields da dauernd sollen, aber in Anlehnung an den schon mehrfach verlinkten FAQ-Eintrag:

```
private static final String iconFiles[] = { "./images/apple.gif", ".images/pear.gif" ... };
private static final String fruitNames[] = { "Apfel", "Birne" ... };

void init()
{
    for (int i=0; i<fruitNames.length; i++)
    {
        JToggleButton button = new JToggleButton(iconFiles[i]);
        ...
        button.addActionListener(createListener(fruitNames[i]));
    }
}

private ActionListener createListener(final String name)
{
    return new ActionListener()
    {
        public void actionPerformed(ActionEvent e)
        {
            pressedButtonWithName(name);
        }
    };
}

private void pressedButtonWithName(String name)
{
    System.out.println("Geklickt: "+name);
}
```

Soweit ich das sehe, hat die ButtonGroup damit nur indirekt zu tun. Wenn nicht, beschreib' den Zusammenhang.


----------



## Ci (30. Jun 2011)

oh je, mit arrays kann nicht nicht viel anfangen! Bin da nicht gerade fit 
geht das vllt. auch ohne array?!

...wie gesagt, ButtonGruop hab ich angelegt, um nur einen Button auswählen zu können! Sonst könnt ich ja auf alle rum tippen und alle wären gleichzeitig aktiv! Will ich ja nicht!

...in meiner Oberfläche hab ich auch Textfelder. In diesen Textfeldern soll der Benutzer irgendwelche Daten eingeben, wie z.B. den Namen! das Feld kann ich problemlos auslesen und in meine Datenbank laden. So will ich ja auch mit den ToggleButtons vorgehen. Nur ist das nicht so einfach...

gruß


----------



## Michael... (30. Jun 2011)

Ci hat gesagt.:


> Nur ist das nicht so einfach...


Versteh das Problem nicht, wo gibt's da Schwierigkeiten? Es wurden ja bereits mehrere Möglichkeiten genannt. Wie und ob man diese einsetzt hängt vom Zweck ab.


```
JFrame frame = new JFrame();
	frame.setLayout(new GridLayout(0, 1));
	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	final ButtonGroup group = new ButtonGroup();
	for (int i=0; i<5; i++) {
		JToggleButton toggle = new JToggleButton("" + i);
		group.add(toggle);
		frame.add(toggle);
		toggle.setActionCommand(" Action " + i);
		toggle.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				System.out.println(group.getSelection().getActionCommand());
			}
		});
	}
	frame.pack();
	frame.setVisible(true);
```


----------



## Marco13 (30. Jun 2011)

(Vielleicht noch als Randbmerkung: Das, was ich oben geschrieben habe, kann man auch mit dem ActionCommand erreichen. Wenn man aber "mehr übergeben will" als nur einen String (also z.B. zusätzlich den Index oder irgendwas anderes) kann man das mit einem anonymen Listener in dieser Form leicht dahingehend erweitern)


----------

