Menu mit Swing

Hallo liebe Leute

Ich hoffe ich mache das hier richtig mit der Themen-Erstellung
falls ich da irgendwie fehlerhaft gegen Forumsregeln was gemacht habe,
sieht es mir bitte nach ;)

_____________________________________________________________



also, ich bin echt verzweifelt :rolleyes: ... und ich bin Java-mäßig ein Buch mit höchstens 2 Seiten :autsch:

Ich muss für ein Java-Seminar ein Programm schreiben mit Swing usw

so soll das ungefähr aussehen ... wie kann ich das bewerkstelligen ???:L könnt ihr mir da auf die Sprünge helfen

ich hoffe meine Grafik ist für euch selbsterklärend


Die Hobbys sollen in JavaCeckBoxMenuIthem sein

ist das GridBagConstraints am besten dafür geeignet ?

was muss ich alles Importieren ??

Java:
import java.awt.Component;
import java.awt.Container;
import java.awt.Insets;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JCheckBoxMenuItem;

// ...... noch was ??? java.awt.event ??


wie muss (grob) meine Struktur sein

Java:
public class Seminar extends JFrame implements ActionListener
     {
        public Seminar()
     {
             super("Seminar");


/* .....

    den ganzen Teil den ich selbst angefertigt habe möchte ich euch ersparen
    ich habe da echt die Nächte damit verbracht was sinnvolles zu gestalten
    aber alles haperte immer wieder an irgendwelchen Kleinigkeiten 

    ..... */


  }
}
 
Zuletzt bearbeitet von einem Moderator:

Dit_

Bekanntes Mitglied
Etwas einfacher gehts mit nem GUI-Builder, aber den sollteste nur nutzen wenn du die grundlagen beherrschst.
Ich dachte umgekehrt :oops:

Auf dem Bild sieht man dass die Schaltflächen Speichern und Reset nicht zentriert platziert wurden... der Abstand von unten und seitlich zu den Schaltflaechen ist zu groß... :noe:

Versuche TableLayout, das wird mit Sicherheit dein Favorit ;) Ist zwar aufwändiger als alle anderen Layouts, aber mit TableLayout kannst du perkekt symmetrische Gui's bauen.

P.S. Ich mache immer so: Erstmal auf Papier zeichnen (mit Tabelle), dann implementieren.

gruß
 
Ja den Code muss ich komplett per Hand schreiben, dass ist ja meine Sorge ^^
danke für den Link, da muss ich mich jetzt mal durchlesen,
och auf englisch (naja dann muss halt ein Übersetzungsseite das grob übersetzen)

die 2 Buttons unten sollen halt nur irgendwie dort sein, nicht perfekt zentriert
ich dachte mir da an so was ganz einfachem ... GridBagConstraints.WEST oder .CENTER... was meint ihr ?

Java:
    save = new JButton("Speichern");
    addComponent(frame, save, 2, 9, 1, 1, GridBagConstraints.WEST, GridBagConstraints.NONE);
    save.setActionCommand("Save");
 
Zuletzt bearbeitet:

jgh

Top Contributor
auch wenn es nicht Sinn und Zweck ist...ich wollte mal schauen, wie lange ich für so eine GUI brauche...und hatte gehofft es unter 1 Std es zu schaffen :( , das war leider nichts...
Beim Speichern musst du dir natürlich noch irgendeine Methode schreiben, die die Textfelder ausliest und dann auch abspeichert, EDIT: ich habe hier einen JFileChooser genommen.

wie dem auch sei...so könnte man es machen (auch wenn es imho zuviel Code für eine Klasse ist)
Ansonsten hoffe ich auf Kritik -insbesondere derjenigen, die das viel besser können als(wie^^) ich.

Java:
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Seminar {
	private JLabel jLabelname, jLabelbezeichnung, jLabelWohnort, jLabelTelefon,
			jLabelHobbys;
	private JTextField jTfVorname, jTfNachname, jTfBezeichnung, jTfWohnort,
			jTfTelefon;
	private JButton jBSpeichern, jBReset;
	private JCheckBoxMenuItem jCBMITanzen, jCBMISport, jCBMIGarten;
	private JMenuBar jMenuBar;
	private JMenu jMdatei;
	private JMenuItem jMISpeichern, jMIReset, jMIExit;
	private JFrame jFrame;
	private JPanel jPanel;

	public static void main(String[] args) {
		new Seminar();
	}

	public Seminar() {
		initFrameAndPanel();
		initLabels();
		initButtons();
		initCheckBox();
		initTextFields();
	
		initAndAddMenuBar();

		addComponentsToPanel();
		jFrame.pack();
		jFrame.setVisible(true);

	}

	private void initAndAddMenuBar() {
		jMenuBar = new JMenuBar();
		jMdatei = new JMenu("Datei");
		jMISpeichern = new JMenuItem("Speichern");
		jMISpeichern.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				speichern();

			}
		});
		jMIExit = new JMenuItem("Exit");
		jMIExit.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				System.exit(0);
			}
		});
		jMIReset = new JMenuItem("Reset");
		jMIReset.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {

				reset();
			}
		});

		jMdatei.add(jMISpeichern);
		jMdatei.add(jMIReset);
		jMdatei.addSeparator();
		jMdatei.add(jMIExit);

		jMenuBar.add(jMdatei);

		jFrame.setJMenuBar(jMenuBar);
	}

	private void addComponentsToPanel() {
		GridBagConstraints a = new GridBagConstraints();
		a.gridx = 0;
		a.gridy = 0;
		a.insets = new Insets(20, 5, 5, 5);
		a.anchor = GridBagConstraints.WEST;
		jPanel.add(jLabelname, a);

		GridBagConstraints b = new GridBagConstraints();
		b.gridx = 1;
		b.gridy = 0;
		b.insets = new Insets(5, 5, 5, 15);
		jPanel.add(jTfVorname, b);

		GridBagConstraints c = new GridBagConstraints();
		c.gridx = 2;
		c.gridy = 0;
		c.insets = new Insets(5, 5, 5, 15);
		c.anchor = GridBagConstraints.EAST;
		jPanel.add(jTfNachname, c);

		GridBagConstraints d = new GridBagConstraints();
		d.gridx = 0;
		d.gridy = 1;
		d.insets = new Insets(5, 5, 5, 15);
		jPanel.add(jLabelbezeichnung, d);

		GridBagConstraints e = new GridBagConstraints();
		e.gridx = 0;
		e.gridy = 1;
		e.insets = new Insets(5, 5, 5, 15);
		jPanel.add(jLabelbezeichnung, e);

		GridBagConstraints f = new GridBagConstraints();
		f.gridx = 1;
		f.gridwidth = 2;
		f.gridy = 1;
		f.insets = new Insets(5, 5, 5, 15);
		jPanel.add(jTfBezeichnung, f);

		GridBagConstraints g = new GridBagConstraints();
		g.gridx = 0;
		g.gridy = 2;
		g.insets = new Insets(5, 5, 5, 15);
		g.anchor = GridBagConstraints.WEST;
		jPanel.add(jLabelWohnort, g);

		GridBagConstraints h = new GridBagConstraints();
		h.gridx = 1;
		h.gridwidth = 2;
		h.gridy = 2;
		h.insets = new Insets(5, 5, 5, 15);
		jPanel.add(jTfWohnort, h);

		GridBagConstraints i = new GridBagConstraints();
		i.gridx = 0;
		i.gridy = 3;
		i.insets = new Insets(5, 5, 5, 15);
		i.anchor = GridBagConstraints.WEST;
		jPanel.add(jLabelTelefon, i);

		GridBagConstraints j = new GridBagConstraints();
		j.gridx = 1;
		j.gridwidth = 2;
		j.gridy = 3;
		j.insets = new Insets(5, 5, 5, 15);
		jPanel.add(jTfTelefon, j);

		GridBagConstraints k = new GridBagConstraints();
		k.gridx = 0;
		k.gridy = 4;
		k.insets = new Insets(5, 5, 5, 15);
		k.anchor = GridBagConstraints.WEST;
		jPanel.add(jLabelHobbys, k);

		GridBagConstraints l = new GridBagConstraints();
		l.gridx = 2;
		l.gridy = 4;
		l.insets = new Insets(5, 15, 5, 15);
		l.anchor = GridBagConstraints.WEST;
		jPanel.add(jCBMIGarten, l);

		GridBagConstraints m = new GridBagConstraints();
		m.gridx = 2;
		m.gridy = 5;
		m.insets = new Insets(5, 15, 5, 15);
		m.anchor = GridBagConstraints.WEST;
		jPanel.add(jCBMISport, m);

		GridBagConstraints n = new GridBagConstraints();
		n.gridx = 2;
		n.gridy = 6;
		n.insets = new Insets(5, 15, 5, 15);
		n.anchor = GridBagConstraints.WEST;
		jPanel.add(jCBMITanzen, n);

		GridBagConstraints o = new GridBagConstraints();
		o.gridx = 1;
		o.gridy = 7;
		o.insets = new Insets(5, 5, 5, 15);
		o.anchor = GridBagConstraints.CENTER;
		jPanel.add(jBSpeichern, o);

		GridBagConstraints p = new GridBagConstraints();
		p.gridx = 2;
		p.gridy = 7;
		p.insets = new Insets(5, 15, 5, 50);
		p.anchor = GridBagConstraints.WEST;
		p.fill = GridBagConstraints.BOTH;
		jPanel.add(jBReset, p);

	}

	private void initCheckBox() {
		jCBMIGarten = new JCheckBoxMenuItem("Garten");
		jCBMISport = new JCheckBoxMenuItem("Sport");
		jCBMITanzen = new JCheckBoxMenuItem("Tanzen");

	}

	private void initTextFields() {
		jTfBezeichnung = new JTextField(25);
		jTfNachname = new JTextField(10);
		jTfVorname = new JTextField(10);
		jTfWohnort = new JTextField(25);
		jTfTelefon = new JTextField(25);
		reset();
	}

	private void initLabels() {
		jLabelname = new JLabel("Name");
		jLabelbezeichnung = new JLabel("Bezeichnung");
		jLabelWohnort = new JLabel("Wohnort");
		jLabelTelefon = new JLabel("Telefon");
		jLabelHobbys = new JLabel("Hobbys");

	}

	private void initFrameAndPanel() {
		jFrame = new JFrame("Seminar");
		jFrame.setSize(new Dimension(500, 500));
		jFrame.setLocationRelativeTo(null);
		jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		jPanel = new JPanel();
		jPanel.setLayout(new GridBagLayout());

		jFrame.getContentPane().add(jPanel);

	}

	private void initButtons() {
		jBSpeichern = new JButton("Speichern");
		jBReset = new JButton("Reset");
		jBSpeichern.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				speichern();

			}
		});
		jBReset.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				reset();

			}

		});
	}

	private void speichern() {
		JFileChooser j = new JFileChooser();
		j.setName("Speichern unter");
		j.showSaveDialog(null);
	}

	private void reset() {
		jTfVorname.setText("Vorname");
		jTfNachname.setText("Nachname");
		jTfBezeichnung.setText("Berufsbezeichnung");
		jTfWohnort.setText("PLZ, Ort, Straße, Hausnummer");
		jTfTelefon.setText("Telefonnummer");
		jCBMIGarten.setSelected(false);
		jCBMISport.setSelected(false);
		jCBMITanzen.setSelected(false);

	}

}
 
Zuletzt bearbeitet:
ouch mama mia sieht der Code hamma aus - alleine schon von der Optik & Übersichtlichkeit :applaus:



was ich sagen wollte, ich bin ja noch ein Neuling und benutze Joe
der Joe kennt das nicht
Code:
  @Override
- kann das nicht compilieren

und ich weiß auch noch nicht was das genau macht - edit/ grad nachgelesen
was passiert wenn man das weglässt / irgendwie verändert ?

Java:
           	/* Mit diesem Typ kann eine Methode gekennzeichnet werden, 
               die die Methode ihrer Oberklasse überschreibt. 
               Der Compiler stellt dann sicher, dass die Oberklasse diese Methode enthält 
               und gibt einen Fehler aus, wenn dies nicht der Fall ist. 

               Beispiel: */

public class A {
    public void eineMethode() {}
}
 
public class B extends A {
    @Override
    public void eineMethode() {}
}


den Code von jgh muss ich mir jetzt echt reinziehen (so was macht irgendwie echt spaß zu lesen^^)
wie funktioniert das mit dem JPanel und einem Menu?, dachte das geht nicht ???:L ok muss erst selber ausprobieren
 

jgh

Top Contributor
[c] @Override[/c] ist eine Annotation

und es passiert nichts...außer das du nicht mehr gewarnt wirst, sofern in der Oberklasse [c]eineMethode()[/c] nicht mehr existiert.
 
ja ich probiere es grad aus :)
man hammer wie es funktioniert^^ und ich habe die Nächte durchgemacht um ... und naja fuba
ich muss jetzt erst mal hier durchsteigen, macht echt laune sowas gut strukturiertes zu lesen / sprich zu begreifen^^
 
Zuletzt bearbeitet:

Dit_

Bekanntes Mitglied
mit TableLayout wäre der Code um min 100 Zeilen kürzer :pueh: :)

Hier als Bsp, RegexChecker:

Java:
public class Test extends AWindow implements ChangeListener {
	
	private static final long		serialVersionUID	= 1L;
	private static final double[][]	DIM					= { { 7, -1, 120, 7, 120, 7 }, 
			{ 7,// [0]abstand OBEN
			17, // [1] text
			25, // [2] Feld
			5, 	// [3] ABSTAND
			17, // [4] text
			25, // [5] Feld
			5, 	// [6] ABSTAND
			17, // [7] text
			-1, // [8] RESULTAT
			15, // [9] ABSTAND 
			25, // [10] BUTTONS
			7	// [11] ABSTAND UNTEN
			} };
	
	private JTextField				_regexInput, _stringInput;
	private JTextArea				_output;
	private JButton					_close;
	
	
	public Test() {
		super("Test");
		createComponents();
	}
	
	@Override
	void createComponents() {
		setPreferredSize(new Dimension(500, 400));
		setLayout(new TableLayout(DIM));
		_regexInput 	= createField();
		_stringInput 	= createField();
		_output 		= createTextArea();
		_close 			= createButton("Fertig");
		
		add(createTextPane("Regex:"), 		"1,1, 4,1");
		add(_regexInput, 					"1,2, 4,2");
		
		add(createTextPane("Teststring:"), 	"1,4, 4,4");
		add(_stringInput, 					"1,5, 4,5");
		
		add(createTextPane("Ergebnis:"), 	"1,7, 4,7");
		add(new JScrollPane(_output), 		"1,8, 4,8");

		add(_close, 						"4, 10");
		
		pack();
		setLocationRelativeTo(null);
		setVisible(true);
	}
	
	/**
	 * @return
	 */
	private JTextArea createTextArea() {
		JTextArea tArea = new JTextArea();
		tArea.setFont(new Font("Tahoma", 0, 12));
		tArea.setEditable(false);
		return tArea;
	}

	private JButton createButton(String text) {
		JButton button = new JButton(text);
		button.addActionListener(this);
		return button;
	}
	private JTextPane createTextPane(String text) {
		JTextPane hint = new JTextPane();
		hint.setText(text);
		hint.setFont(new Font("Tahoma", 0, 10));
		hint.setEnabled(false);
		hint.setDisabledTextColor(Color.gray.darker());
		hint.setOpaque(false);
		return hint;
	}
	private JTextField createField() {
		JTextField field = new JTextField();
		field.addActionListener(this);
		field.addKeyListener(this);
		field.setFont(new Font("Tahoma", 0, 12));
		field.addMouseListener(this);
		field.getCaret().addChangeListener(this);
		return field;
	}
	
	@Override
	public void stateChanged(ChangeEvent e) {
		check();
	}
	
	@Override
	public void actionPerformed(ActionEvent e) {
		Object obj = e.getSource();
		if (obj.equals(_close)) {
			closeWindow();
		}
	}
	
	/**
	 * Prueft die Eingabe.
	 */
	private void check() {
		String regex 	= _regexInput.getText();
		String tocheck 	= _stringInput.getText();
		
		if (regex.length() > 1 && tocheck.length() > 1) {
			try {
				Pattern p = Pattern.compile(regex);
				Matcher m = p.matcher(tocheck);
				StringBuilder sb = new StringBuilder();
				
				while(m.find()){
					sb.append("Gefunden:");
					sb.append("\t'"+m.group());
					sb.append("'\n");
				}
				
				setOutput(sb.toString());
				
			} catch (Exception e) {
				setOutput("Error: "+ e.getMessage());
			}
		} else {
			setOutput("");
		}
	}
	
	
	private void setOutput(final String result) {
		SwingUtilities.invokeLater(new Runnable() {
			
			@Override
			public void run() {
				_output.setText(result);
			}
		});
		
	}
	
	
	
	public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			
			@Override
			public void run() {
				new Test();
			}
		});
		
	}
}

AWindow ist eine Abstrakte Klasse die von JFrame erbt und alle notwendigen Listener "implementiert (leer)"...
Man Braucht TableLayout.jar zusätzlich.
 
Zuletzt bearbeitet:
G

Gast2

Gast
auch wenn es nicht Sinn und Zweck ist...ich wollte mal schauen, wie lange ich für so eine GUI brauche...und hatte gehofft es unter 1 Std es zu schaffen :( , das war leider nichts...
Beim Speichern musst du dir natürlich noch irgendeine Methode schreiben, die die Textfelder ausliest und dann auch abspeichert, EDIT: ich habe hier einen JFileChooser genommen.

wie dem auch sei...so könnte man es machen (auch wenn es imho zuviel Code für eine Klasse ist)
Ansonsten hoffe ich auf Kritik -insbesondere derjenigen, die das viel besser können als(wie^^) ich.

Java:
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Seminar {
	private JLabel jLabelname, jLabelbezeichnung, jLabelWohnort, jLabelTelefon,
			jLabelHobbys;
	private JTextField jTfVorname, jTfNachname, jTfBezeichnung, jTfWohnort,
			jTfTelefon;
	private JButton jBSpeichern, jBReset;
	private JCheckBoxMenuItem jCBMITanzen, jCBMISport, jCBMIGarten;
	private JMenuBar jMenuBar;
	private JMenu jMdatei;
	private JMenuItem jMISpeichern, jMIReset, jMIExit;
	private JFrame jFrame;
	private JPanel jPanel;

	public static void main(String[] args) {
		new Seminar();
	}

	public Seminar() {
		initFrameAndPanel();
		initLabels();
		initButtons();
		initCheckBox();
		initTextFields();
	
		initAndAddMenuBar();

		addComponentsToPanel();
		jFrame.pack();
		jFrame.setVisible(true);

	}

	private void initAndAddMenuBar() {
		jMenuBar = new JMenuBar();
		jMdatei = new JMenu("Datei");
		jMISpeichern = new JMenuItem("Speichern");
		jMISpeichern.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				speichern();

			}
		});
		jMIExit = new JMenuItem("Exit");
		jMIExit.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				System.exit(0);
			}
		});
		jMIReset = new JMenuItem("Reset");
		jMIReset.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {

				reset();
			}
		});

		jMdatei.add(jMISpeichern);
		jMdatei.add(jMIReset);
		jMdatei.addSeparator();
		jMdatei.add(jMIExit);

		jMenuBar.add(jMdatei);

		jFrame.setJMenuBar(jMenuBar);
	}

	private void addComponentsToPanel() {
		GridBagConstraints a = new GridBagConstraints();
		a.gridx = 0;
		a.gridy = 0;
		a.insets = new Insets(20, 5, 5, 5);
		a.anchor = GridBagConstraints.WEST;
		jPanel.add(jLabelname, a);

		GridBagConstraints b = new GridBagConstraints();
		b.gridx = 1;
		b.gridy = 0;
		b.insets = new Insets(5, 5, 5, 15);
		jPanel.add(jTfVorname, b);

		GridBagConstraints c = new GridBagConstraints();
		c.gridx = 2;
		c.gridy = 0;
		c.insets = new Insets(5, 5, 5, 15);
		c.anchor = GridBagConstraints.EAST;
		jPanel.add(jTfNachname, c);

		GridBagConstraints d = new GridBagConstraints();
		d.gridx = 0;
		d.gridy = 1;
		d.insets = new Insets(5, 5, 5, 15);
		jPanel.add(jLabelbezeichnung, d);

		GridBagConstraints e = new GridBagConstraints();
		e.gridx = 0;
		e.gridy = 1;
		e.insets = new Insets(5, 5, 5, 15);
		jPanel.add(jLabelbezeichnung, e);

		GridBagConstraints f = new GridBagConstraints();
		f.gridx = 1;
		f.gridwidth = 2;
		f.gridy = 1;
		f.insets = new Insets(5, 5, 5, 15);
		jPanel.add(jTfBezeichnung, f);

		GridBagConstraints g = new GridBagConstraints();
		g.gridx = 0;
		g.gridy = 2;
		g.insets = new Insets(5, 5, 5, 15);
		g.anchor = GridBagConstraints.WEST;
		jPanel.add(jLabelWohnort, g);

		GridBagConstraints h = new GridBagConstraints();
		h.gridx = 1;
		h.gridwidth = 2;
		h.gridy = 2;
		h.insets = new Insets(5, 5, 5, 15);
		jPanel.add(jTfWohnort, h);

		GridBagConstraints i = new GridBagConstraints();
		i.gridx = 0;
		i.gridy = 3;
		i.insets = new Insets(5, 5, 5, 15);
		i.anchor = GridBagConstraints.WEST;
		jPanel.add(jLabelTelefon, i);

		GridBagConstraints j = new GridBagConstraints();
		j.gridx = 1;
		j.gridwidth = 2;
		j.gridy = 3;
		j.insets = new Insets(5, 5, 5, 15);
		jPanel.add(jTfTelefon, j);

		GridBagConstraints k = new GridBagConstraints();
		k.gridx = 0;
		k.gridy = 4;
		k.insets = new Insets(5, 5, 5, 15);
		k.anchor = GridBagConstraints.WEST;
		jPanel.add(jLabelHobbys, k);

		GridBagConstraints l = new GridBagConstraints();
		l.gridx = 2;
		l.gridy = 4;
		l.insets = new Insets(5, 15, 5, 15);
		l.anchor = GridBagConstraints.WEST;
		jPanel.add(jCBMIGarten, l);

		GridBagConstraints m = new GridBagConstraints();
		m.gridx = 2;
		m.gridy = 5;
		m.insets = new Insets(5, 15, 5, 15);
		m.anchor = GridBagConstraints.WEST;
		jPanel.add(jCBMISport, m);

		GridBagConstraints n = new GridBagConstraints();
		n.gridx = 2;
		n.gridy = 6;
		n.insets = new Insets(5, 15, 5, 15);
		n.anchor = GridBagConstraints.WEST;
		jPanel.add(jCBMITanzen, n);

		GridBagConstraints o = new GridBagConstraints();
		o.gridx = 1;
		o.gridy = 7;
		o.insets = new Insets(5, 5, 5, 15);
		o.anchor = GridBagConstraints.CENTER;
		jPanel.add(jBSpeichern, o);

		GridBagConstraints p = new GridBagConstraints();
		p.gridx = 2;
		p.gridy = 7;
		p.insets = new Insets(5, 15, 5, 50);
		p.anchor = GridBagConstraints.WEST;
		p.fill = GridBagConstraints.BOTH;
		jPanel.add(jBReset, p);

	}

	private void initCheckBox() {
		jCBMIGarten = new JCheckBoxMenuItem("Garten");
		jCBMISport = new JCheckBoxMenuItem("Sport");
		jCBMITanzen = new JCheckBoxMenuItem("Tanzen");

	}

	private void initTextFields() {
		jTfBezeichnung = new JTextField(25);
		jTfNachname = new JTextField(10);
		jTfVorname = new JTextField(10);
		jTfWohnort = new JTextField(25);
		jTfTelefon = new JTextField(25);
		reset();
	}

	private void initLabels() {
		jLabelname = new JLabel("Name");
		jLabelbezeichnung = new JLabel("Bezeichnung");
		jLabelWohnort = new JLabel("Wohnort");
		jLabelTelefon = new JLabel("Telefon");
		jLabelHobbys = new JLabel("Hobbys");

	}

	private void initFrameAndPanel() {
		jFrame = new JFrame("Seminar");
		jFrame.setSize(new Dimension(500, 500));
		jFrame.setLocationRelativeTo(null);
		jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		jPanel = new JPanel();
		jPanel.setLayout(new GridBagLayout());

		jFrame.getContentPane().add(jPanel);

	}

	private void initButtons() {
		jBSpeichern = new JButton("Speichern");
		jBReset = new JButton("Reset");
		jBSpeichern.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				speichern();

			}
		});
		jBReset.addActionListener(new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				reset();

			}

		});
	}

	private void speichern() {
		JFileChooser j = new JFileChooser();
		j.setName("Speichern unter");
		j.showSaveDialog(null);
	}

	private void reset() {
		jTfVorname.setText("Vorname");
		jTfNachname.setText("Nachname");
		jTfBezeichnung.setText("Berufsbezeichnung");
		jTfWohnort.setText("PLZ, Ort, Straße, Hausnummer");
		jTfTelefon.setText("Telefonnummer");
		jCBMIGarten.setSelected(false);
		jCBMISport.setSelected(false);
		jCBMITanzen.setSelected(false);

	}

}

Code:
getContentPane()
ist seit Java 1.5 unnötig
Code:
setVisible(true)
ganz am schluß aufrufen (am besten in der main) und ein invokeLater drum herum.
Von GridBagLayout halte ich sowieso nix^^...
Du rufst
Code:
pack()
UND
Code:
setSize()
auf eins davon ist unnötig...
 

jgh

Top Contributor
Code:
getContentPane()
ist seit Java 1.5 unnötig

gut zu wissen :)

Code:
setVisible(true)
ganz am schluß aufrufen (am besten in der main) und ein invokeLater drum herum.

mache ich doch, ist mein letzter Aufruf im Konstruktor...wenn ich das in der main machen sollte, wären noch getter-Methoden zusätzlich nötig, aber ok...das invokeLater von SwingUtilities habe ich mal rausgelassen, solange eh nichts anderes passiert.

Von GridBagLayout halte ich sowieso nix^^...
ansichtssache :)


Du rufst
Code:
pack()
UND
Code:
setSize()
auf eins davon ist unnötig..

ich dachte
Code:
pack()
packt nur, also verkleinert einen Frame...aber -wie ich gerade ausprobiert habe^^- geht es tatsächlich ohne :) thx

FormLayout ist noch viel mächtiger und der Code wird durch den programtischen FormBuilder auch übersichtlicher.
mal abgesehen von der Länge der Klasse, finde ich den Code übersichtlich...werde ich mir aber mal bei Gelegenheit anschauen

@dit
dein Bsp kann ich auch mit der TableLayout.jar nicht kompilieren...

mit TableLayout wäre der Code um min 100 Zeilen kürzer
anschauen werde ich mir das auch mal.
 

jgh

Top Contributor
^^ exakt wegen so einem Bsp habe ich mir angewöhnt die ContentPane zu nutzen...jetzt wo du das sagst :) , fällt es mir wieder ein
 
G

Gast2

Gast
Das gilt vielleicht für das Hinzufügen von Komponenten nicht aber generell ;-)
Java:
frame.setBackground(Color.ORANGE);
vs.
Java:
frame.getContentPane().setBackground(Color.ORANGE);

Noch nie versucht, noch nie gebraucht, da eh immer min. ein JPanel auf dem JFrame liegt ;)
 
T

Tomate_Salat

Gast
Java:
SwingUtilities.invokeLater(new Runnable() 
{
	@Override
	public void run() 
	{
		jFrame.setVisible(true);
	}
});

Das fehlt trotzdem. Dann würde ich meine GUI auch nicht über den Konstruktor starten. Wenn du noch iwelche Methoden vor dem setVisible aufrufen willst ist das nicht möglich, oder du musst mehr Parameter in dern Konstruktor stecken. Ich habe meist eine eigene Methode, welche mir die GUI im EDT startet.

Noch nie versucht, noch nie gebraucht, da eh immer min. ein JPanel auf dem JFrame liegt ;)
dem schließe ich mich an.
 
@jgh

erst mal hamma tolles Programm :toll: ich arbeite mich schon den ganzen Tag da hinein :D macht aber heiden Spaß

_______________________

ich hätte da noch paar fragen

irgendwie erzeugt es mir keine Datei :oops:
und das "Speichern unter" finde ich nirgendwo beim ausführen

Java:
    private void speichern() 
    {
        JFileChooser j = new JFileChooser();
        j.setName("Speichern unter");
        j.showSaveDialog(null);
    }

habe im Netz so was gefunden, kann man das irgendwie da einbauen um eine Datei zu erzeugen?
Code:
fileChooser.setSelectedFile(new File("lin_cfg.c"));
als ich es einbauen wollte (verschiedene Varianten), hat der Compiler mich nur ausgelacht ...


_____________________________



dann wegen
Code:
pack()
UND
Code:
setSize()
ich habe das mal ausgetestet
wenn ich
Code:
pack()
weglasse, dann habe ich ein großes Fenster
wenn ich
Code:
setSize()
weglasse, dann rutscht mein Fenster nach rechts-unten
wenn ich beide drinne behalte, dann habe ich eigentlich das Fenster was ich haben will
ist es in der Programmierung ok beide drinne zu behalten, oder was wäre besser?


______________________________


@Dit_

danke Dit für den Code :eek:
jgh hat mir aber den (Schritt für Schritt sehr klaren) Code geschrieben, den selbst ich gut begreife
dein Code ist sehr viel (viel viel) kleiner :)
aber... ich las da erst mal nur spanisch Bahnhof mit Chinesischem Untertitel :autsch:
ich werde mich später in den garantiert durcharbeiten bis ich ihn verstanden habe :rtfm: :toll:
wenn ich erst mal da meine eigenen Namen/Worte verwende, dann steige ich da bestimmt gut ein^^
 

jgh

Top Contributor
mal so auf die schnelle als Ansatz...ABER in der Datei steht immer noch nichts drinnen^^
der JFileChooser ist auch nicht dafür gedacht, eine Datei zu speichern...sondern nur -wie der Name auch sagt- ein File/ oder Verzeichnis auszusuchen, wo gespeichert wird.
Der Code sollte soweit klappen, bis auf das du dir noch überlegen musst...was du in die Datei schreiben willst:

und dein Codeschnipsel passt natürlich nur, wenn man den entsprechenden Variablennamen nimmt...in diesem Fall [c]j[/c]

Java:
private void speichern() {
		JFileChooser j = new JFileChooser();
		j.setName("Speichern unter");
//Dein Codeschnippsel
		j.setSelectedFile(new File("lin_cfg.c")); 
		int antwort = j.showSaveDialog(null);

		if (antwort == JFileChooser.APPROVE_OPTION) {
			File f = j.getSelectedFile();
			try {
				FileWriter fw = new FileWriter(f);
				JOptionPane.showMessageDialog(jFrame, "Die Datei "
						+ f.getCanonicalPath()
						+ "wurde erfolgreich gespeichert.",
						"Speichern erfolgreich",
						JOptionPane.INFORMATION_MESSAGE, null);
			} catch (IOException e) {
				e.printStackTrace();
				JOptionPane.showMessageDialog(jFrame, "Die Datei "
						+ "konnte nicht gespeichert werden.",
						"Fehler beim Speicherh", JOptionPane.WARNING_MESSAGE,
						null);
			}
		}
	}

nur um bspw deine Eingaben zu speichern, bietet sich meiner Meinung eher an:
Daten aus den Textfeldern lesen, in eine feste Datei speichern und nicht jedesmal zu fragen unter welchen Namen und im welchen Verzeichnis gespeichert werden soll.
 
Zuletzt bearbeitet:
......

nur um bspw deine Eingaben zu speichern, bietet sich meiner Meinung eher an:
Daten aus den Textfeldern lesen, in eine feste Datei speichern und nicht jedesmal zu fragen unter welchen Namen und im welchen Verzeichnis gespeichert werden soll.

ja das wäre natürlich am besten :)

wie kann man da den RandomAccessFile verwenden
Die Klasse RandomAccessFile bietet die Möglichkeit, Dateien mit wahlfreiem Zugriff anzusprechen. Die Datei kann entweder mit Lese- oder mit Lese- und Schreibzugriff geöffnet werden. Mit der Methode seek() kann man sich in der Datei bewegen.
sozusagen dass alle Eingaben als eine Sitzung gespeichert werden
 

jgh

Top Contributor
Java:
private RandomAccessFile raf;


private void speichern() {
		String[] daten = new String[8];
		daten = copyDaten(daten);
		try {
			raf = new RandomAccessFile("daten.txt", "rw");
			raf.seek(raf.length());
			for (int i = 0; i < daten.length; i++) {
				raf.writeUTF(daten[i]);
			}
			JOptionPane.showMessageDialog(jFrame, "Der Teilnehmer " + daten[0]
					+ " " + daten[1] + " wurde erfolgreich gespeichert",
					"Speichern erfolgreich", JOptionPane.INFORMATION_MESSAGE);
			reset();
			raf.close();
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

	}

	private String[] copyDaten(String[] daten) {
		daten[0] = jTfVorname.getText();
		daten[1] = jTfNachname.getText();
		daten[2] = jTfBezeichnung.getText();
		daten[3] = jTfWohnort.getText();
		daten[4] = jTfTelefon.getText();
		daten[5] = "garten=" + jCBMIGarten.isSelected();
		daten[6] = "sport=" + jCBMISport.isSelected();
		daten[7] = "tanzen=" + jCBMITanzen.isSelected() + "\r\n";
		return daten;
	}
 
hmm habe den ganzen tag um diesen RandomAccessFile drum gefeilt
habe das auch imoprtiert
Code:
import java.io.*;
und
Code:
import javax.swing.JOptionPane;
leider will das bei mir nicht funktionieren, erzeugt auch keine Datei ...
vielleicht muss ich noch "daten" implementieren, aber ist doch schon ...
... ich weiß echt nicht ... ???:L
 

jgh

Top Contributor
wo erwartest du die datei
Code:
daten.txt
denn?

normalerweise sollte sie denn auch bspw dort liegen:

D:\deinWorkspaces\deinProjektName\

du hast die beiden Methoden speichern() und copyData() in die Klasse Seminar hinzugefügt und die andere speichern()-Methode entfernt?
 
ja genau die 2 neuen hinzugefügt
alte weggemacht (nur als Test dagelassen)
Java:
speichern() .....
copyData() .....

/*
speichern() ....
*/

wenn ich auf speichern drücke - dann tut sich nichts ...

ansonsten ist der Code perfekt (man versteht wirklich alles super) :rtfm:





hmm frage mich grad ob es ein große Sache diesen Code in eine externe Datei umzuändern ???:L
und in Seminar es aufzurufen

Java:
    private void speichern() 
    
    {
		try{
		File file=new File("RandomAccessFile.java");
		Process p=Runtime.getRuntime().exec(file.getCanonicalPath( ));
			} 
                catch (Exception e){ System.out.println(e); }

 	}
 

jgh

Top Contributor
du bekommst keine erfolgsmeldung, "Kunde erfolgreich gespeichert.." ?
dann muss er dir eine Exception irgendwo fliegen...gib mal deine konsolenausgabe bitte.
 

jgh

Top Contributor
Java:
private void speichern() {
		String[] daten = new String[8];
		daten = copyDaten(daten);
		try {
			raf = new RandomAccessFile("C://Users//Cheffe//Desktop//daten.txt",
					"rw");
			raf.seek(raf.length());
			for (int i = 0; i < daten.length; i++) {
				raf.writeUTF(daten[i]);
			}
			JOptionPane.showMessageDialog(jFrame, "Der Teilnehmer " + daten[0]
					+ " " + daten[1] + " wurde erfolgreich gespeichert",
					"Speichern erfolgreich", JOptionPane.INFORMATION_MESSAGE);
			reset();
			raf.close();
		} catch (FileNotFoundException e) {
			JOptionPane.showMessageDialog(jFrame, e.getMessage());
			e.printStackTrace();
		} catch (IOException e) {
			JOptionPane.showMessageDialog(jFrame, e.getMessage());
			e.printStackTrace();
		}

	}

versuch mal zu speichern und sag mir bitte was passiert^^
 
ach ja, habe ich noch in Kommentar gesetzt

jetzt ist es wie vorher,
das Fenster öffnet sich,
wenn man auf speichern tippt, dann wird im hinteren Eingabefenster viel abgespielt
aber keine Datei abgespeichert, auch kein neues Fenster geöffnet wohin man es abspeichern soll

___________________

könnte es vielleicht dran liegen, dass ich Joe benutze ???:L mit
Code:
@Override
wollte Joe ja auch nichts anfangen
___________________

anklicken, dieses ungewöhnliche wird mir angezeigt ???:L

___________________


könnte es dran liegen, dass das JCheckBoxMenuItem (gibt ja nur 2 Werte false und true )
nicht so einfach abgespeichert werden kann ???:L
Code:
        daten[6] = "garten=" + jCBMIGarten.isSelected();
daten ist ja vom typ String


hmmm ich würde notfalls die Daten einzeln abspeichern (schritt für schritt)
ohne die for Anweisung - sind ja nur 8 Daten abszuspeichern
und die Datei kann nächstes mal einfach überschrieben werden (nur 1 Sitzung notwendig)
 
Zuletzt bearbeitet:

jgh

Top Contributor
könnte es dran liegen, dass das JCheckBoxMenuItem (gibt ja nur 2 Werte false und true )
nicht so einfach abgespeichert werden kann
daten[6] = "garten=" + jCBMIGarten.isSelected();
daten ist ja vom typ String
nein, erstens klappt es bei mir...und zweitens gibt die Methode jCBMIGarten.isSelected() ein boolean zurück und der wird mit einem String ("garten=") zusammengefrickelt...dann steht (bzw. sollte) da stehen: garten=true oder halt false.

könnte es vielleicht dran liegen, dass ich Joe benutze mit @Override wollte Joe ja auch nichts anfangen
eher unwahrscheinlich...aber ich kenne JOE nicht^^


Dir fliegt irgendwo ne ArrrayIndexOutBoundsException...mmmh, bei mir nicht!
Hier nochmal mein gesamter Code...

in Zeile 269 wird der Ort des Speicherns festgelegt...hier jetzt bei dir auf dem Desktop.


Java:
import java.awt.Dimension;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;

import javax.swing.JButton;
import javax.swing.JCheckBoxMenuItem;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Seminar {
	private JLabel jLabelname, jLabelbezeichnung, jLabelWohnort, jLabelTelefon,
			jLabelHobbys;
	private JTextField jTfVorname, jTfNachname, jTfBezeichnung, jTfWohnort,
			jTfTelefon;
	private JButton jBSpeichern, jBReset;
	private JCheckBoxMenuItem jCBMITanzen, jCBMISport, jCBMIGarten;
	private JMenuBar jMenuBar;
	private JMenu jMdatei;
	private JMenuItem jMISpeichern, jMIReset, jMIExit;
	private JFrame jFrame;
	private JPanel jPanel;
	private RandomAccessFile raf;

	public static void main(String[] args) {
		new Seminar();
	}

	public Seminar() {
		initFrameAndPanel();
		initLabels();
		initButtons();
		initCheckBox();
		initTextFields();

		initAndAddMenuBar();

		addComponentsToPanel();

		jFrame.pack();
		jFrame.setVisible(true);

	}

	private void initAndAddMenuBar() {
		jMenuBar = new JMenuBar();
		jMdatei = new JMenu("Datei");
		jMISpeichern = new JMenuItem("Speichern");
		jMISpeichern.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
				speichern();

			}
		});
		jMIExit = new JMenuItem("Exit");
		jMIExit.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
				System.exit(0);
			}
		});
		jMIReset = new JMenuItem("Reset");
		jMIReset.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {

				reset();
			}
		});

		jMdatei.add(jMISpeichern);
		jMdatei.add(jMIReset);
		jMdatei.addSeparator();
		jMdatei.add(jMIExit);

		jMenuBar.add(jMdatei);

		jFrame.setJMenuBar(jMenuBar);
	}

	private void addComponentsToPanel() {
		GridBagConstraints a = new GridBagConstraints();
		a.gridx = 0;
		a.gridy = 0;
		a.insets = new Insets(20, 5, 5, 5);
		a.anchor = GridBagConstraints.WEST;
		jPanel.add(jLabelname, a);

		GridBagConstraints b = new GridBagConstraints();
		b.gridx = 1;
		b.gridy = 0;
		b.insets = new Insets(5, 5, 5, 15);
		jPanel.add(jTfVorname, b);

		GridBagConstraints c = new GridBagConstraints();
		c.gridx = 2;
		c.gridy = 0;
		c.insets = new Insets(5, 5, 5, 15);
		c.anchor = GridBagConstraints.EAST;
		jPanel.add(jTfNachname, c);

		GridBagConstraints d = new GridBagConstraints();
		d.gridx = 0;
		d.gridy = 1;
		d.insets = new Insets(5, 5, 5, 15);
		jPanel.add(jLabelbezeichnung, d);

		GridBagConstraints e = new GridBagConstraints();
		e.gridx = 0;
		e.gridy = 1;
		e.insets = new Insets(5, 5, 5, 15);
		jPanel.add(jLabelbezeichnung, e);

		GridBagConstraints f = new GridBagConstraints();
		f.gridx = 1;
		f.gridwidth = 2;
		f.gridy = 1;
		f.insets = new Insets(5, 5, 5, 15);
		jPanel.add(jTfBezeichnung, f);

		GridBagConstraints g = new GridBagConstraints();
		g.gridx = 0;
		g.gridy = 2;
		g.insets = new Insets(5, 5, 5, 15);
		g.anchor = GridBagConstraints.WEST;
		jPanel.add(jLabelWohnort, g);

		GridBagConstraints h = new GridBagConstraints();
		h.gridx = 1;
		h.gridwidth = 2;
		h.gridy = 2;
		h.insets = new Insets(5, 5, 5, 15);
		jPanel.add(jTfWohnort, h);

		GridBagConstraints i = new GridBagConstraints();
		i.gridx = 0;
		i.gridy = 3;
		i.insets = new Insets(5, 5, 5, 15);
		i.anchor = GridBagConstraints.WEST;
		jPanel.add(jLabelTelefon, i);

		GridBagConstraints j = new GridBagConstraints();
		j.gridx = 1;
		j.gridwidth = 2;
		j.gridy = 3;
		j.insets = new Insets(5, 5, 5, 15);
		jPanel.add(jTfTelefon, j);

		GridBagConstraints k = new GridBagConstraints();
		k.gridx = 0;
		k.gridy = 4;
		k.insets = new Insets(5, 5, 5, 15);
		k.anchor = GridBagConstraints.WEST;
		jPanel.add(jLabelHobbys, k);

		GridBagConstraints l = new GridBagConstraints();
		l.gridx = 2;
		l.gridy = 4;
		l.insets = new Insets(5, 15, 5, 15);
		l.anchor = GridBagConstraints.WEST;
		jPanel.add(jCBMIGarten, l);

		GridBagConstraints m = new GridBagConstraints();
		m.gridx = 2;
		m.gridy = 5;
		m.insets = new Insets(5, 15, 5, 15);
		m.anchor = GridBagConstraints.WEST;
		jPanel.add(jCBMISport, m);

		GridBagConstraints n = new GridBagConstraints();
		n.gridx = 2;
		n.gridy = 6;
		n.insets = new Insets(5, 15, 5, 15);
		n.anchor = GridBagConstraints.WEST;
		jPanel.add(jCBMITanzen, n);

		GridBagConstraints o = new GridBagConstraints();
		o.gridx = 1;
		o.gridy = 7;
		o.insets = new Insets(5, 5, 5, 15);
		o.anchor = GridBagConstraints.CENTER;
		jPanel.add(jBSpeichern, o);

		GridBagConstraints p = new GridBagConstraints();
		p.gridx = 2;
		p.gridy = 7;
		p.insets = new Insets(5, 15, 5, 50);
		p.anchor = GridBagConstraints.WEST;
		p.fill = GridBagConstraints.BOTH;
		jPanel.add(jBReset, p);

	}

	private void initCheckBox() {
		jCBMIGarten = new JCheckBoxMenuItem("Garten");
		jCBMISport = new JCheckBoxMenuItem("Sport");
		jCBMITanzen = new JCheckBoxMenuItem("Tanzen");

	}

	private void initTextFields() {
		jTfBezeichnung = new JTextField(25);
		jTfNachname = new JTextField(10);
		jTfVorname = new JTextField(10);
		jTfWohnort = new JTextField(25);
		jTfTelefon = new JTextField(25);
		reset();
	}

	private void initLabels() {
		jLabelname = new JLabel("Name");
		jLabelbezeichnung = new JLabel("Bezeichnung");
		jLabelWohnort = new JLabel("Wohnort");
		jLabelTelefon = new JLabel("Telefon");
		jLabelHobbys = new JLabel("Hobbys");

	}

	private void initFrameAndPanel() {
		jFrame = new JFrame("Seminar");
		jFrame.setSize(new Dimension(500, 500));
		jFrame.setLocationRelativeTo(null);
		jFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		jPanel = new JPanel();
		jPanel.setLayout(new GridBagLayout());

		jFrame.getContentPane().add(jPanel);

	}

	private void initButtons() {
		jBSpeichern = new JButton("Speichern");
		jBReset = new JButton("Reset");
		jBSpeichern.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
				speichern();

			}
		});
		jBReset.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
				reset();

			}

		});
	}

	private void speichern() {
		String[] daten = new String[8];
		daten = copyDaten(daten);
		try {
			raf = new RandomAccessFile(
					"C://Dokumente und Einstellungen//Janes//Desktop//daten.txt",
					"rw");
			raf.seek(raf.length());
			for (int i = 0; i < daten.length; i++) {
				raf.writeUTF(daten[i]);
			}
			JOptionPane.showMessageDialog(jFrame, "Der Teilnehmer " + daten[0]
					+ " " + daten[1] + " wurde erfolgreich gespeichert",
					"Speichern erfolgreich", JOptionPane.INFORMATION_MESSAGE);
			reset();
			raf.close();
		} catch (FileNotFoundException e) {
			JOptionPane.showMessageDialog(jFrame, e.getMessage());
			e.printStackTrace();
		} catch (IOException e) {
			JOptionPane.showMessageDialog(jFrame, e.getMessage());
			e.printStackTrace();
		}

	}

	private String[] copyDaten(String[] daten) {
		daten[0] = jTfVorname.getText();
		daten[1] = jTfNachname.getText();
		daten[2] = jTfBezeichnung.getText();
		daten[3] = jTfWohnort.getText();
		daten[4] = jTfTelefon.getText() + ",";
		daten[5] = "garten=" + jCBMIGarten.isSelected();
		daten[6] = "sport=" + jCBMISport.isSelected();
		daten[7] = "tanzen=" + jCBMITanzen.isSelected() + "\r\n";
		return daten;
	}

	private void reset() {
		jTfVorname.setText("Vorname");
		jTfNachname.setText("Nachname");
		jTfBezeichnung.setText("Berufsbezeichnung");
		jTfWohnort.setText("PLZ, Ort, Straße, Hausnummer");
		jTfTelefon.setText("Telefonnummer");
		jCBMIGarten.setSelected(false);
		jCBMISport.setSelected(false);
		jCBMITanzen.setSelected(false);

	}

}
 
Zuletzt bearbeitet:
och Mensch sage nicht so was :eek:
ich habe bei der Methode copyDaten das letzte
Code:
daten[7]
rausgenommen um was auszutesten
und später als ich es wieder eingefügt habe,
habe ich vergessen es in der Meth. speichern wieder raufzusetzen
Code:
String[8]
(die 0 zählt ja mit)

genau deswegen stehe ich bei Java immer zwischen Verzweiflung und Faszination :shock:
99,9 % alles super verstanden,
aber an einer einzigen Zahl bei ca 10.000 Buchstaben im Programm gescheitert
ich werde es jetzt mal austesten *teu teu teu*




edit,:/ och man ich bin am ..... - genau das war der einzige (winzige) Fehler
und ich grübelte gestern den ganzen Tag bis in die Nacht und sah es nicht :autsch:
ich könnte mir selbst am ... naja ok gut^^

DANKE^10 :toll: Programm arbeitet jetzt perfekt
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Manuelles Menu in Swing AWT, Swing, JavaFX & SWT 3
B Swing WindowBuilde: Menu -> anderes Panel wechseln AWT, Swing, JavaFX & SWT 1
Lukas2904 Kontext Menu AWT, Swing, JavaFX & SWT 2
D JavaFX Menu soll nicht bei jedem Click verschwinden AWT, Swing, JavaFX & SWT 8
H Swing Menu Bar AWT, Swing, JavaFX & SWT 7
B JavaFX DropDown Menu mit ausführbaren Buttons AWT, Swing, JavaFX & SWT 1
F Popup Menu etwas verschieben AWT, Swing, JavaFX & SWT 2
J Probleme mit contex Menu (javafx) AWT, Swing, JavaFX & SWT 1
B JavaFX Menu Ribbon AWT, Swing, JavaFX & SWT 2
X JMenu Menu-Bar ausrichtung ändern im Programm AWT, Swing, JavaFX & SWT 0
A Mini-Menu-Schriften. Ein Problem bei hohen DPI Zahlen AWT, Swing, JavaFX & SWT 2
I Swing Menu->Beenden AWT, Swing, JavaFX & SWT 6
V Eclipse View Right-Click Menu hinzufügen AWT, Swing, JavaFX & SWT 2
lumo SWT Shell & Menu AWT, Swing, JavaFX & SWT 2
H shell in view implementieren; menu mit keystroke unterlegen AWT, Swing, JavaFX & SWT 8
S Dropdown menu / tree AWT, Swing, JavaFX & SWT 7
H JPanel/Menu AWT, Swing, JavaFX & SWT 14
M Pie Menu AWT, Swing, JavaFX & SWT 6
R Menu-Fenster - Teile von Fenster tauschen AWT, Swing, JavaFX & SWT 3
M Problem mit eigenem Menu Explorer AWT, Swing, JavaFX & SWT 6
G Rechtsklick-Menu bei JTable AWT, Swing, JavaFX & SWT 4
L Frage zu Erstellung des Menu mit JFace AWT, Swing, JavaFX & SWT 2
G Menu Vorlage gesucht. AWT, Swing, JavaFX & SWT 4
B Menu aktualisieren AWT, Swing, JavaFX & SWT 2
S Parent eines Menu-Eintrages ermitteln? AWT, Swing, JavaFX & SWT 3
J java menu+button problem AWT, Swing, JavaFX & SWT 6
G JButton als Basis für Menu AWT, Swing, JavaFX & SWT 2
G AnfängerSWING Frage Werkzeugleiste unter dem Menu AWT, Swing, JavaFX & SWT 3
L Popup-Menu AWT, Swing, JavaFX & SWT 2
L Menu Position verändern? AWT, Swing, JavaFX & SWT 24
G Dialog aus Menu AWT, Swing, JavaFX & SWT 3
I [Java 6] Tray-Menu und Bilder? AWT, Swing, JavaFX & SWT 3
G ActionListener vom Menu zu JPanel AWT, Swing, JavaFX & SWT 4
N Menu Problem AWT, Swing, JavaFX & SWT 3
C PullDown Menu AWT, Swing, JavaFX & SWT 2
J Darstellungsfehler Menu AWT, Swing, JavaFX & SWT 2
G menu wird verdeckt AWT, Swing, JavaFX & SWT 4
L Internationalisierung mittels ResourceBundle und Menu HotKey AWT, Swing, JavaFX & SWT 6
C JTable in Fenster anzeigen (über Menu) AWT, Swing, JavaFX & SWT 5
M Menu AWT, Swing, JavaFX & SWT 2
R Eine Art DropDown-Menu für JAVA? AWT, Swing, JavaFX & SWT 3
XWing Jave swing overly benutzten. AWT, Swing, JavaFX & SWT 3
J Anzeige ID und Markierung für Knoten in Eclipse & Swing AWT, Swing, JavaFX & SWT 4
Juelin javax.swing in javafx AWT, Swing, JavaFX & SWT 1
A Eclipse 2023 und Swing AWT, Swing, JavaFX & SWT 4
W 2 JTables in einem Swing-Fenster? AWT, Swing, JavaFX & SWT 5
H Swing Componente zur Läufzeit ändern AWT, Swing, JavaFX & SWT 3
B Actionlistener mit Java Swing AWT, Swing, JavaFX & SWT 2
W Gibt es einen "automatischen Listener" in Swing oder JTable oder der ATM-Klasse? AWT, Swing, JavaFX & SWT 14
H Swing Buttons erst nach Klick sichtbar AWT, Swing, JavaFX & SWT 13
ExceptionOfExpectation Anpassung von JKomponentengrößen (Swing) AWT, Swing, JavaFX & SWT 3
thor_norsk AWT SWING Aufgabe AWT, Swing, JavaFX & SWT 7
U Zwei Fragen zu eienr Swing Aufgabe AWT, Swing, JavaFX & SWT 2
M Swing Bilder in Swing anzeigen AWT, Swing, JavaFX & SWT 9
H Swing , GridLayout, Größenbestimmung der Komponenten im Layout AWT, Swing, JavaFX & SWT 8
H Simple Animation mit Swing AWT, Swing, JavaFX & SWT 2
Guybrush Threepwood Einfachste Möglichkeit zum Abspielen eines Videos in Swing AWT, Swing, JavaFX & SWT 4
A Swing ProgressBar über 2 parallel laufende Threads AWT, Swing, JavaFX & SWT 2
M Swing GridLayout AWT, Swing, JavaFX & SWT 2
O return-Statement mit Swing AWT, Swing, JavaFX & SWT 6
O Ein Java-Programm mit Swing steuern AWT, Swing, JavaFX & SWT 1
Monokuma Swing zu JavaFX AWT, Swing, JavaFX & SWT 5
J Swing Slider AWT, Swing, JavaFX & SWT 11
G Thread starten Swing AWT, Swing, JavaFX & SWT 5
G Swing JPasswordField AWT, Swing, JavaFX & SWT 12
L Swing Button Farbe ändern/wechseln AWT, Swing, JavaFX & SWT 2
C Swing AWT GUI Anfänger Aufgabe AWT, Swing, JavaFX & SWT 7
W Inject bei einem Swing Frontend AWT, Swing, JavaFX & SWT 8
L Kommunikation zwischen Klassen / Konstruktoren bei Swing AWT, Swing, JavaFX & SWT 9
M Feldvalidierung swing AWT, Swing, JavaFX & SWT 4
E Swing Componenten werden nach Änderung des display modes verzerrt dargestellt AWT, Swing, JavaFX & SWT 8
D [Swing] Anordnung von Komponenten mit GridLayout Manager AWT, Swing, JavaFX & SWT 13
O Zukunft von Swing und JavaFX ? AWT, Swing, JavaFX & SWT 3
S Swing Fenster State Machine AWT, Swing, JavaFX & SWT 1
T Swing Swing an Bildschirm anpassen AWT, Swing, JavaFX & SWT 3
S Swing Panel wird nicht neu gezeichnet AWT, Swing, JavaFX & SWT 3
M Swing Java Swing/AWT Combobox Bug AWT, Swing, JavaFX & SWT 3
M Swing GUI mittels erben sowie variabler Dateninhalt AWT, Swing, JavaFX & SWT 1
W Swing Multitouch mit Swing AWT, Swing, JavaFX & SWT 6
S Swing-Applikation die ein Numpad nachbildet samt Keybindings..? AWT, Swing, JavaFX & SWT 5
S Swing Java Swing AWT, Swing, JavaFX & SWT 6
Blender3D Problem mit € Symbol Font Gotham Windows 10 Swing AWT, Swing, JavaFX & SWT 11
J Swing oder JavaFX AWT, Swing, JavaFX & SWT 21
D Swing Anwendung ohne JPanel erstellen AWT, Swing, JavaFX & SWT 1
D SQL Statements mit Java Swing benutzen AWT, Swing, JavaFX & SWT 4
Damtonix BufferStrategy flackert (Swing) AWT, Swing, JavaFX & SWT 9
D DatePicker für Java Swing AWT, Swing, JavaFX & SWT 2
B JavaFX oder swing AWT, Swing, JavaFX & SWT 3
T Java Swing - kleines Rechteck unter dem cursor AWT, Swing, JavaFX & SWT 5
L 2D-Grafik Swing paint|paintComponent AWT, Swing, JavaFX & SWT 2
L Swing Größe automatisch anpassen AWT, Swing, JavaFX & SWT 14
G Swing Swing Binding JList funktioniert nicht AWT, Swing, JavaFX & SWT 5
Blender3D Meine Swing Anwendung läuft unter Windows 10 und Ubuntu aber nicht auf Windows 7 AWT, Swing, JavaFX & SWT 16
B Bar Plot in Swing JPanel AWT, Swing, JavaFX & SWT 0
D Swing in Kombination mit JGraphX und JGraphT AWT, Swing, JavaFX & SWT 0
F main-Funktion bei Swing AWT, Swing, JavaFX & SWT 4
S Java Swing Print() method AWT, Swing, JavaFX & SWT 4
S Java Swing auf Windows Phone AWT, Swing, JavaFX & SWT 6
I JAVAFX - Übergabe der Inhalte an eine Scene - Wo ist der Vorteil gegenüber Swing? AWT, Swing, JavaFX & SWT 2
T Custom Window ohne Swing / AWT / FX..?! AWT, Swing, JavaFX & SWT 1

Ähnliche Java Themen


Oben