Zum Inhalt springen

Textfeld-inhalt speichern.Anfänger braucht Hilfe!


Blacksheep22

Empfohlene Beiträge

Hallo,

beschäftige mich jetzt seit 1 1/2 wochen mit java. habe schon mehrere wirklich kleine programme geschrieben. waren zwar alle sinnlos aber egal ;-)

jetzt habe ich mich an eine art adressbuch gemacht. habe schon die labels mit textfeldern, alles in 3 tabs unterteilt. hab auch ne menüleiste.

mein problem ist nur, dass ich keine ahnung habe wie ich jetzt die textfelder auslesen, bzw. den inhalt speichern kann.

hier ist mal mein code :

import java.awt.*;

import java.awt.event.*;

import java.io.File;

import java.io.FileWriter;

import java.io.IOException;

import javax.accessibility.Accessible;

import javax.accessibility.AccessibleContext;

import javax.swing.JButton;

import javax.swing.JComponent;

import javax.swing.JFileChooser;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JMenuBar;

import javax.swing.JPanel;

import javax.swing.JTabbedPane;

import javax.swing.JTextArea;

import javax.swing.JTextField;

import javax.swing.filechooser.FileFilter;

public class AdressbuchMitMenuebar extends Frame implements ActionListener, WindowListener

{

public static void main(String args[])

{

AdressbuchMitMenuebar Fenster1 = new AdressbuchMitMenuebar();

Fenster1.setSize(240, 420);

Fenster1.setLocation(250, 200);

Fenster1.setTitle("Adressbuch");

Fenster1.setBackground(Color.gray);

Fenster1.show();

JButton button = new JButton("Öffnen");

button.addActionListener(

new ActionListener() {

public void actionPerformed( ActionEvent ae) {

JFileChooser fc = new JFileChooser();

fc.setFileFilter( new FileFilter()

{

@Override public boolean accept( File f )

{

return f.isDirectory() ||

f.getName().toLowerCase().endsWith( ".txt" );

}

@Override public String getDescription()

{

return "Texte";

}

} );

int state = fc.showOpenDialog( null );

if ( state == JFileChooser.APPROVE_OPTION )

{

File file = fc.getSelectedFile();

System.out.println( file.getName() );

}

else

{

System.exit( 0 );

}

}

}

);

JTabbedPane tab = new JTabbedPane();

Fenster1.add(tab,BorderLayout.CENTER);

JLabel l1 = new JLabel("Vorname");

JLabel l2 = new JLabel("Nachname");

JLabel l3 = new JLabel("Wohnort");

JLabel l4 = new JLabel("Straße");

JLabel l11 = new JLabel ("HausNr.");

JLabel l5 = new JLabel("PLZ");

JLabel l6 = new JLabel ("Telefonnummer");

JLabel l7 = new JLabel ("Handynummer");

JLabel l8 = new JLabel ("E - mail Adresse");

JLabel l9 = new JLabel ("ICQ - Nummer");

JLabel l10 = new JLabel ("Anmerkungen");

JTextField TextFeld = new JTextField(" ");

JTextField TextFeld2 = new JTextField (" ");

JTextField TextFeld3 = new JTextField (" ");

JTextField TextFeld4 = new JTextField (" ");

JTextField TextFeld5 = new JTextField(" ");

JTextField TextFeld6 = new JTextField(" ");

JTextField TextFeld7 = new JTextField(" ");

JTextField TextFeld8 = new JTextField(" ");

JTextField TextFeld9 = new JTextField(" ");

JTextArea TextFeld10 = new JTextArea(10, 20);

JTextField TextFeld11 = new JTextField(" ");

JPanel panel = new JPanel();

panel.add(l1);

panel.add(TextFeld);

panel.add(l2);

panel.add(TextFeld2);

panel.add(l3);

panel.add(TextFeld3);

panel.add(l4);

panel.add(TextFeld4);

panel.add(l11);

panel.add(TextFeld11);

panel.add(l5);

panel.add(TextFeld5);

panel.add(button);

tab.add("Adresse",panel);

JPanel panel1 = new JPanel();

panel1.add(l6);

panel1.add(TextFeld6);

panel1.add(l7);

panel1.add(TextFeld7);

panel1.add(l8);

panel1.add(TextFeld8);

panel1.add(l9);

panel1.add(TextFeld9);

tab.add("Erreichbar unter..", panel1);

JPanel panel2 = new JPanel();

panel2.add(l10);

panel2.add(TextFeld10);

tab.add("Anmerkungen", panel2);

}

public AdressbuchMitMenuebar ()

{

MenuBar hauptMenue = new MenuBar();

Menu menue1 = new Menu("Datei");

Menu menue4 = new Menu("Hilfe");

menue1.add("Laden");

menue1.add("Speichern");

menue1.add("Speichern unter");

menue1.addSeparator();

menue1.add("Beenden");

menue4.add("Index");

menue4.add("Über");

hauptMenue.add(menue1);

hauptMenue.setHelpMenu(menue4);

setMenuBar(hauptMenue);

menue1.addActionListener(this);

addWindowListener(this);

}

public void actionPerformed(ActionEvent evt)

{

if (evt.getSource() instanceof MenuItem)

{

String menuAdd = evt.getActionCommand();

if (menuAdd.equals("Beenden")) System.exit(0);

}

}

public void windowClosing(WindowEvent evt)

{

System.exit(0);

}

public void windowOpened(WindowEvent evt){}

public void windowIconified(WindowEvent evt){}

public void windowDeiconified(WindowEvent evt){}

public void windowClosed(WindowEvent evt){}

public void windowActivated(WindowEvent evt){}

public void windowDeactivated(WindowEvent evt){}

}

Hoffe das ihr mir helfen könnt.

Gruss, Blacksheep

Link zu diesem Kommentar
Auf anderen Seiten teilen

Zuerst, in Code-Tags sieht ein geposteter Quelltext um einiges übersichtlicher aus

----->

import java.awt.*;

import java.awt.event.*;

import java.io.File;

import java.io.FileWriter;

import java.io.IOException;


import javax.accessibility.Accessible;

import javax.accessibility.AccessibleContext;

import javax.swing.JButton;

import javax.swing.JComponent;

import javax.swing.JFileChooser;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JMenuBar;

import javax.swing.JPanel;

import javax.swing.JTabbedPane;

import javax.swing.JTextArea;

import javax.swing.JTextField;

import javax.swing.filechooser.FileFilter;


public class AdressbuchMitMenuebar extends Frame implements ActionListener, WindowListener 

{

  public static void main(String args[])

  {



     AdressbuchMitMenuebar Fenster1 = new AdressbuchMitMenuebar();

     Fenster1.setSize(240, 420);

     Fenster1.setLocation(250, 200);

     Fenster1.setTitle("Adressbuch");

     Fenster1.setBackground(Color.gray);

     Fenster1.show();



     JButton button = new JButton("Öffnen");

     button.addActionListener(

    		 new ActionListener() {


					public void actionPerformed( ActionEvent ae) {

						JFileChooser fc = new JFileChooser(); 


					    fc.setFileFilter( new FileFilter() 

					    { 

					      @Override public boolean accept( File f ) 

					      { 

					        return f.isDirectory() || 

					          f.getName().toLowerCase().endsWith( ".txt" ); 

					      } 

					      @Override public String getDescription() 

					      { 

					        return "Texte"; 

					      } 

					    } ); 


					    int state = fc.showOpenDialog( null ); 


					    if ( state == JFileChooser.APPROVE_OPTION ) 

					    { 

					      File file = fc.getSelectedFile(); 

					      System.out.println( file.getName() ); 

					    } 

					    else 

					    	{

					    	System.exit( 0 );


					    	}

					}

    		 }


);	

 	    JTabbedPane tab = new JTabbedPane();

 	    Fenster1.add(tab,BorderLayout.CENTER);





 	    JLabel l1 = new JLabel("Vorname");

 	    JLabel l2 = new JLabel("Nachname");

 	    JLabel l3 = new JLabel("Wohnort");

 	    JLabel l4 = new JLabel("Straße");

 	    JLabel l11 = new JLabel ("HausNr.");

 	    JLabel l5 = new JLabel("PLZ");


 	    JLabel l6 = new JLabel ("Telefonnummer");

 	    JLabel l7 = new JLabel ("Handynummer");

 	    JLabel l8 = new JLabel ("E - mail Adresse");

 	    JLabel l9 = new JLabel ("ICQ - Nummer");


 	    JLabel l10 = new JLabel ("Anmerkungen");



 	    JTextField TextFeld = new JTextField("                                                                         ");

 	    JTextField TextFeld2 = new JTextField ("                                                                         ");

 	    JTextField TextFeld3 = new JTextField ("                                                                         ");

 	    JTextField TextFeld4 = new JTextField ("                                                                         ");

 	    JTextField TextFeld5 = new JTextField("                                                                         ");

 	    JTextField TextFeld6 = new JTextField("                                                                         ");

 	    JTextField TextFeld7 = new JTextField("                                                                         ");

 	    JTextField TextFeld8 = new JTextField("                                                                         ");

 	    JTextField TextFeld9 = new JTextField("                                                                         ");

 	    JTextArea TextFeld10 = new JTextArea(10, 20);

 	    JTextField TextFeld11 = new JTextField("                                                                        ");


 	    JPanel panel = new JPanel();


 	       panel.add(l1);

 	       panel.add(TextFeld);

 	       panel.add(l2);

 	       panel.add(TextFeld2);

 	       panel.add(l3);

 	       panel.add(TextFeld3);

 	       panel.add(l4);

 	       panel.add(TextFeld4);

 	       panel.add(l11);

 	       panel.add(TextFeld11);

 	       panel.add(l5);

 	       panel.add(TextFeld5);

 	       panel.add(button);

 	       tab.add("Adresse",panel);


 	    JPanel panel1 = new JPanel();

 	       panel1.add(l6);

 	       panel1.add(TextFeld6);

 	       panel1.add(l7);

 	       panel1.add(TextFeld7);

 	       panel1.add(l8);

 	       panel1.add(TextFeld8);

 	       panel1.add(l9);

 	       panel1.add(TextFeld9);

 	       tab.add("Erreichbar unter..", panel1);


 	    JPanel panel2 = new JPanel();

 	    	panel2.add(l10);

 	    	panel2.add(TextFeld10);

 	    	tab.add("Anmerkungen", panel2);

  }



  public AdressbuchMitMenuebar ()

  {

     MenuBar hauptMenue = new MenuBar();

     Menu menue1 = new Menu("Datei");

     Menu menue4 = new Menu("Hilfe");

     menue1.add("Laden");

     menue1.add("Speichern");

     menue1.add("Speichern unter");

     menue1.addSeparator();

     menue1.add("Beenden");

     menue4.add("Index");

     menue4.add("Über");

     hauptMenue.add(menue1);

     hauptMenue.setHelpMenu(menue4);

     setMenuBar(hauptMenue);

     menue1.addActionListener(this);

     addWindowListener(this); 

   }


  public void actionPerformed(ActionEvent evt)

  {

     if (evt.getSource() instanceof MenuItem)

    {

       String menuAdd = evt.getActionCommand();

       if (menuAdd.equals("Beenden")) System.exit(0);

     }

   }


  public void windowClosing(WindowEvent evt)

  {

     System.exit(0);

   }


  public void windowOpened(WindowEvent evt){}

  public void windowIconified(WindowEvent evt){}

  public void windowDeiconified(WindowEvent evt){}

  public void windowClosed(WindowEvent evt){}

  public void windowActivated(WindowEvent evt){}

  public void windowDeactivated(WindowEvent evt){}







}





was genau mache ich jetzt mit JTextfield#setText(String) bzw. JTextfield#getText() ??

hab das ausm link gelesn aber werde irgendwie nicht schlau draus.:( :confused:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also hab ichs richtig verstanden und willst wissen wie du den Inhalt vom Textfeld auslesen kannst und wie du diesen Wert dann "dauerhaft" speicherst, dass er auch nach dem Beendigung deines Programms noch da ist?

Also das Auslesen von Textfeldern geht (wie von Dragon8 schon geschrieben) über JTextField#getText(). Mit JTextField#setText(String) kannst du dann bei Bedarf Werte in die Textfelder rein schreiben.

Für das Speichern der Werte müsstest du dir erstmal Gedanken machen wie du das alles geordnet unterbringen willst. Grundsätzlich kannst du die Daten in einer Datei speichern (z. B. als Text oder im CSV-Format). Wenns mehr als nur n bisschen zum üben ist kannst du auch eine kleine AccessDB anlegen und die Daten dort in einer Tabelle speichern oder du könntest eine richtige Datenbank nehmen (z. B. MySQL) und dort die Daten speichern. Die Möglichkeiten an sich sind sehr Umfangreich. Für den Anfang wärst du denke ich aber durchaus gut bedient wenn du erstmal anfängst die Daten in einer Datei zu speichern.

Dazu wirst du dann java.io.File + FileReader und FileWriter brauchen. Das hier jetzt genauer zu erklären einfach mal so halte ich allerdings für sehr schwierig dafür müsstest du wohl erstmal selbst in Büchern usw. Wissen sammeln.

Link zu diesem Kommentar
Auf anderen Seiten teilen

ich will eigentlich, dass das was in den textfeldern steht so gespeichert wird, dass sie, wenn ich sie mit meinem "programm" öffne, eben wieder dort angezeigt werden wo ich sie hingeschrieben habe.

sprich, ich schreibe hallo in textfeld1 und speichere es. dann beende ich das programm und starte es nochmal. dann gehe ich auf öffnen und wähle die gespeicherte datei aus. dann soll wieder in textfeld1 hallo stehen.

also so hatte ich das vor.^^

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dateien schreiben kannst du mit einem FileWriter:


BufferedWriter out = new BufferedWriter(new FileWriter("datei.txt"));

Für ein Adressbuch bietet es sich an die Datei im CSV-Format anzulegen. Dabei steht jeder Datensatz in einer eigenen Zeile und die Attribute werden durch Kommas (oder andere fest definierte Zeichen) getrennt: der Dateiinhalt könnte dann in etwa so aussehen: Max,Mustermann,Testtraße,18,10233,Zufallshausen Miriam,Musterfrau,Versuchshang,1,73421,Blubbstadt .... In die Datei schreiben kannst du mit out.write(String einString); Einen Zeilenumsprung realisiert man mit out.newLine(); Wenn du fertig bist musst die Datei dann nur noch sauber schließen und das speichern ist beendet. Den Text aus Textfelder holst du dir mit textfeld.getText(); Zum lesen der Datei:

BufferedReader in = new BufferedReader(new FileReader("dateiname"));


String zeile;

while((zeile = in.readLine()) != null){

     //Verarbeitung

}

Um CSV-Dateien zu lesen bietet sich eine Zeilenweise Verarbeitunng ganz gut an. Die Zeile kannst dann auch noch bequem mit der String-Methode split() als Array aufsplitten:

String [] daten = zeile.split(",");

Link zu diesem Kommentar
Auf anderen Seiten teilen

ich will eigentlich, dass das was in den textfeldern steht so gespeichert wird, dass sie, wenn ich sie mit meinem "programm" öffne, eben wieder dort angezeigt werden wo ich sie hingeschrieben habe.

sprich, ich schreibe hallo in textfeld1 und speichere es. dann beende ich das programm und starte es nochmal. dann gehe ich auf öffnen und wähle die gespeicherte datei aus. dann soll wieder in textfeld1 hallo stehen.

also so hatte ich das vor.^^

Speedi hat dir ja schon mehr dazu geschrieben. Du solltest dir allerdings schon bewusst machen, dass du die Datei beim erneuten Öffnen selbst auslesen und die Werte in die Textfelder schreiben musst. Das passiert nicht von allein.

Sprich die Schritte insgesamt sind folgende:

1. GUI anzeigen und User gibt seine Daten ein

2. User beendet GUI (oder klickt speichern)

3. Speichern der eingegebenen Daten (vorzugsweise, wie speedi schon sagte, in eine CSV-Datei)

-- Ende Eingabe und Speichern --

4. Programm wird gestartet (zum Anzeigen von Daten)

5. Datei auslesen und Werte in die jeweiligen Textfelder schreiben

All diese Schritte (und wahrscheinlich noch einige kleinere Zwischenschritte) müssen dann von dir implementiert bzw. programmiert werden.

Wenn ich mir die Bemerkung erlauben darf ist es auch fast schon ein bisschen viel für einen Anfänger, der sich erst seit 1,5 Wochen mit Java beschäftigt, gleich ein GUIbasiertes Adressbuch zu programmieren.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn ich mir die Bemerkung erlauben darf ist es auch fast schon ein bisschen viel für einen Anfänger, der sich erst seit 1,5 Wochen mit Java beschäftigt, gleich ein GUIbasiertes Adressbuch zu programmieren.

-> kommt mir langsam auch so vor. Vor allen dingen klingt das was speedi erklärt eigentlich anfänger - gerecht aber ich verstehe trotzdem nur ca. die hälfte. naja, ich denke ich werde mir erst mal ein buch zulegen und durchlesen.^^

schätze mal das ich dann verstehe was ihr meint :P

Link zu diesem Kommentar
Auf anderen Seiten teilen

naja, ich denke ich werde mir erst mal ein buch zulegen und durchlesen.^^

schätze mal das ich dann verstehe was ihr meint :P

Ich denke das ist ne gute idee. Geh es langsam an, solche sachen lernt man nicht innerhalb von nen paar Tagen einfach so, das kommt mit der Zeit.

Und bevor du dir unbedingt Bücher kaufst, schau dir lieber erstmal nen paar kostenlose Tutorials und openbooks an. Das wäre vor allem, das auch hier viel erwähnte Java ist auch eine Insel (Das ist das gesamte Buch, und wirklich vollkommen kostenlos ;) )

Des weiteren ist es, auch als Anfänger, sehr empfehlenswert sich den Link zur Java Dokumentation (Java Platform SE 6) zu merken, oder sie sich sogar gleich runterzuladen. Es gibt auch die Möglichkeit diese sich in einigen IDE direkt einzubinden, sodass beim programmieren die passenden Dokumentationteile direkt passend angezeigt werden.

Und zu guter Letzt falls du dir danach dann noch immer unbedingt ein Buch zulegen willst, eine kleine Empfehlung von mir. Die Java Core Bücher sind wirklich sehr gut. Das sind insgesamt 2 Bücher, wobei sich der erste Band auch mit den Grundlagen beschäftigt und der zweite schon eher erweitertes Wissen behandelt.

Viel Spaß beim lernen ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...