# Das Auswählen einer Checkbox und des OK-Buttons soll einen Frame öffnen



## blubb (21. Juni 2010)

Hallo!
Ich habe das Problem, dass ich bis Donnerstag ein Programm schreiben soll. Da ich mich noch nicht so lange mit Java beschäftige, bekomme ich es nicht hin, dass sich durch das Auswählen einer Checkbox (von 3) und auf den OK Button klicken, ein anderes Frame öffnet.
Ich danke für jeden Tipp.


----------



## Bobblz (21. Juni 2010)

ActionListener, der das Event vom Button behandelt brauchst du oder hast du den schon?
Werd mal bitte konkreter, was du schon programmiert hast, bzw. wo du nicht weiterkomst.


----------



## blubb (21. Juni 2010)

Oh man, ich hab überhaupt kein Plan. Also bisher hab ich nur des Feld erstellt und ein paar Hilfen aus dem Internet ausprobiert, was alles nicht sehr viel gebracht hat.
Also ich schreib so ein Programm für eine Jugendherberge. Da gibt es Gäste, diese Teilen sich in drei Gruppen auf: Kinder, Erwachsene und Jugendleiter. Wenn ich jetzt mit einem Formular anfange, in dem erst mal geklärt werden muss, um was für einen Gast es sich handelt, möchte ich danach über 3 Checkboxen und eine Auswahl und ein Klick auf einen OKButton auf das nächste Formular kommen. Je nachdem, ob es ein Kind, Erwachsener oder Jule ist, muss man verschiedene Infos angeben. Nur ich bekomm einfach nicht raus, wie sich nach klicken des OKbuttons das andere Formular öffnet.


----------



## Kai008 (21. Juni 2010)

Nen ActionListener im Button, darin die Boxen auswerten und das 2. JFrame genauso wie das erste öffnen. Warum nimmst du so einen Auftrag an, wenn du nichtmal von den Grundprinzipien, der GUI-Programmierung eine Ahnung hast?


----------



## Akeshihiro (21. Juni 2010)

Hast du schon das neue Formular fertig? Wenn ja, dann musst du es ja nur noch "starten", also einfach ein Objekt des Formulars erzeugen und sichtbar machen. Das machste dann eben in dem ActionListener deines buttons. Achja, deine Auswahl (Kind/Erwachsener/Jugendleiter) würd ich nicht mit Checkboxen machen, sondern lieber mit RadioButtons.

So könnte halt der ActionListener für deinen Button aussehen:


```
okButton.addActionListener(new ActionListener() {
	public void actionPerformed(ActionEvent e) {
		// Prüfen, welche Option (Kind/Erwachsener/Jugendleiter) gewählt wurde
		// ...
		
		// Weiteres Formular öffnen
		NeuesFormular form = new NeuesFormular();	// Eventuell Parameter an den Konstruktor übergeben, damit das Formular weiß, um was für eine Person es sich handelt
		form.setSize(500, 500);
		form.setLocationRelativeTo(null);
		form.setVisible(true);
	}
});
```


----------



## blubb (22. Juni 2010)

Okay, vielen Dank, das probier ich gleich mal aus.
Dieser Auftrag nennt sich mündliches Abi. Da ich nicht grad die beste Lehrerin hatte, darf ich mir alles selber beibringen und irgendwie meinte sie, dass wäre total einfach. Nur das ist es nicht, wenn man im Unterricht, wie ich jetzt bemerkte, noch nicht mal die Grundkenntnisse richtig verstanden hat.


----------



## Kai008 (22. Juni 2010)

Ach so.
Da muss ich ihr aber (ohne es selbst in einer Schule/Kurs ect. gelernt zu haben) zustimmen. Mit ActionListener solltest du dich aber so tief wie möglich auseinandersetzen, da Input einer der drei Grundfunktionen eines Programmes ist. Daher gibt es auch Milliarden von Tutorials.

http://openbook.galileodesign.de/javainsel5/javainsel15_006.htm#Rxx747java150060400053E1F024115


----------



## blubb (22. Juni 2010)

Mein Schwerpunkt ist eigentlich Vererbung und Objektassoziation, aber mit dem hab ich mich kurz auseinander gesetzt und dann lief des. Das Problem ist jetzt das einigermaßen grafisch hinzubekommen.
Ich hab jetzt versucht durch einen Button auf das andere Formular zuzugreifen, aber ich schaffe es einfach nicht.


----------



## Kai008 (22. Juni 2010)

Hm, ich will zwar nicht, das du die Prüfung nicht schaffst, ich will aber auch nicht, das du etwas kopierst.
Von daher schaue dir mal das an: http://openbook.galileocomputing.de/javainsel8/javainsel_02_008.htm#t2t37
Das ist aber echt tiefstes Grundprinzip.


----------



## blubb (22. Juni 2010)

Also, nur was kopieren will ich auch nicht. Ich würde es viel lieber verstehen und kapieren, wie ich durch Anklicken eines Buttons das passende Formular öffnen kann. Den Rest habe ich eigentlich schon und muss nur nochmal etwas überarbeitet werden.


----------



## Kai008 (22. Juni 2010)

Wie gesagt, einen Listener registrieren und das zweite Formular genauso wie das erste öffnen. Ist doch wirklich nicht schwer.


----------



## youza (22. Juni 2010)

Schau dir des mal an:
Klasse test2:

```
import javax.swing.JFrame;
import javax.swing.JPanel;


public class test2 {
	public static void main(String[]args){
		Formularauswahl fa = new Formularauswahl();
		JPanel jp_Formularpanel = fa.Formularpanel(200,100);
		JFrame jf_Formularfenster = new JFrame("Formular");
		jf_Formularfenster.add(jp_Formularpanel);
		jf_Formularfenster.setSize(200, 115);
		jf_Formularfenster.setVisible(true);
	}
}
```
Formularauswahl:

```
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JPanel;


public class Formularauswahl {
	private JPanel jp_Formulare = new JPanel();
	private JComboBox jc_Formulare = new JComboBox();
	private JButton jb_ok = new JButton("Auswahl bestätigen");
	public JPanel Formularpanel(int Breite, int Hoehe){	
		jp_Formulare.setLayout(null);
		jp_Formulare.setSize(Breite, Hoehe);
		jc_Formulare.addItem("1");
		jc_Formulare.addItem("2");
		jc_Formulare.addItem("3");
		jc_Formulare.addItem("4");
		
		ActionListener al_ok = new ActionListener(){
			public void actionPerformed(ActionEvent arg0) {
				 // Prüfen, welche Option (Kind/Erwachsener/Jugendleiter) gewählt wurde        // ...               
				// Weiteres Formular öffnen        
				new NeuesFormular(jc_Formulare.getSelectedItem().toString());   
			}	
		};
		jb_ok.addActionListener(al_ok);
		
		jc_Formulare.setBounds(10, 10, 150, 30);
		jb_ok.setBounds(10, 45, 150, 30);
		jp_Formulare.add(jc_Formulare);
		jp_Formulare.add(jb_ok);
		return jp_Formulare;	
	}
}
```
Neues Formular:

```
import javax.swing.JOptionPane;


public class NeuesFormular {
	public NeuesFormular(String Auswahl)
	{
		JOptionPane.showMessageDialog(null, "Sie haben Formular nummer " + Auswahl + " gewählt!");
	}
}
```

Vieleicht hilfts dir ja


----------



## blubb (24. Juni 2010)

Nochmal vielen Dank für eure Hilfe!
Hab jetzt alles grafisch umgestaltet und jetzt funktioniert es!


----------

