Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

JTextField-ovi upis - ispis u txt

[es] :: Java :: JTextField-ovi upis - ispis u txt

[ Pregleda: 12929 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

fratria.sm
Freelance Designer

Član broj: 232011
Poruke: 52
217.169.220.*



+266 Profil

icon JTextField-ovi upis - ispis u txt06.09.2009. u 11:43 - pre 177 meseci
Pozdrav svima,
poceo sam da radim neki programcic (domaci) za vodjenje evidencije o osobama gde treba da se popuni formular i sacuva kao txt i da ima mogucnost otvaranja tog sacuvanog teksta i ispisa u odgovarajuca tekst polja.
Moj problem kao pocetnika u javi je to sto to ne znam da uradim sa vise polja nego samo sa jednim JTextField-om.
Tu je i kod koji sam poceo da pisem i on radi upis-ispis u-iz jednog JTextField - a, ali sa vise nikako ne mogu da se snadjem.
Pa ako neko moze da mi pomogne kako bi to npr izgledalo sa 2 polja.
hvalaaaa!!!!



Code:

import javax.swing.JPanel;
import java.awt.Frame;
import java.awt.BorderLayout;
import javax.swing.JDialog;
import java.awt.Dimension;
import javax.swing.JTextField;
import java.awt.Rectangle;
import java.awt.Point;

import javax.swing.JFileChooser;
import javax.swing.JLabel;
import javax.swing.JButton;
import javax.swing.JOptionPane;

import java.awt.Insets;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;

public class UpisIspis extends JDialog {

    private static final long serialVersionUID = 1L;
    private JPanel jContentPane = null;
    private JTextField txtFldIme = null;
    private JTextField txtFldBrGod = null;
    private JLabel labelIme = null;
    private JLabel labelBrgod = null;
    private JButton buttonOpen = null;
    private JButton buttonSave = null;
    private JFileChooser _fileChooser = new JFileChooser();

    /**
     * This method initializes txtFldIme    
     *     
     * @return javax.swing.JTextField    
     */
    private JTextField getTxtFldIme() {
        if (txtFldIme == null) {
            txtFldIme = new JTextField();
            txtFldIme.setLocation(new Point(83, 54));
            txtFldIme.setSize(new Dimension(80, 20));
        }
        return txtFldIme;
    }

    /**
     * This method initializes txtFldBrGod    
     *     
     * @return javax.swing.JTextField    
     */
    private JTextField getTxtFldBrGod() {
        if (txtFldBrGod == null) {
            txtFldBrGod = new JTextField();
            txtFldBrGod.setLocation(new Point(273, 54));
            txtFldBrGod.setSize(new Dimension(80, 20));
        }
        return txtFldBrGod;
    }

    /**
     * This method initializes buttonOpen    
     *     
     * @return javax.swing.JButton    
     */
    private JButton getButtonOpen() {
        if (buttonOpen == null) {
            buttonOpen = new JButton();
            buttonOpen.setLocation(new Point(92, 220));
            buttonOpen.setText("OTVORI");
            buttonOpen.setSize(new Dimension(80, 20));
            buttonOpen.addMouseListener(new java.awt.event.MouseAdapter() {
                public void mouseClicked(java.awt.event.MouseEvent e) {
                    int osd = _fileChooser.showOpenDialog(UpisIspis.this);
                    if (osd == JFileChooser.APPROVE_OPTION)
                    {
                        File f = _fileChooser.getSelectedFile();
                        try {
                            FileReader reader = new FileReader(f);
                            txtFldIme.read(reader, "");
                        }catch (IOException eio) {
                            System.out.println(e);
                            System.exit(1);
                        }
                    }
                }
            });
        }
        return buttonOpen;
    }

    /**
     * This method initializes buttonSave    
     *     
     * @return javax.swing.JButton    
     */
    private JButton getButtonSave() {
        if (buttonSave == null) {
            buttonSave = new JButton();
            buttonSave.setLocation(new Point(254, 219));
            buttonSave.setText("SACUVAJ");
            buttonSave.setMargin(new Insets(2, 4, 2, 4));
            buttonSave.setSize(new Dimension(80, 20));
            buttonSave.addMouseListener(new java.awt.event.MouseAdapter() {
                public void mouseClicked(java.awt.event.MouseEvent e) {
                    
                    int osd = _fileChooser.showSaveDialog(UpisIspis.this);
                    if(osd == JFileChooser.APPROVE_OPTION)
                    {
                        File f = _fileChooser.getSelectedFile();
                        try {
                            FileWriter writer = new FileWriter(f);
                            txtFldIme.write(writer);
                            
                        }catch (IOException ioe) {
                            JOptionPane.showMessageDialog(UpisIspis.this, ioe);
                            System.exit(1);
                        }
                        
                    }
                }
            });
        }
        return buttonSave;
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        UpisIspis ui = new UpisIspis(null);
        ui.show();

    }

    /**
     * @param owner
     */
    public UpisIspis(Frame owner) {
        super(owner);
        initialize();
    }

    /**
     * This method initializes this
     * 
     * @return void
     */
    private void initialize() {
        this.setSize(406, 311);
        this.setTitle("evidencija");
        this.setContentPane(getJContentPane());
    }

    /**
     * This method initializes jContentPane
     * 
     * @return javax.swing.JPanel
     */
    private JPanel getJContentPane() {
        if (jContentPane == null) {
            labelBrgod = new JLabel();
            labelBrgod.setBounds(new Rectangle(186, 56, 72, 16));
            labelBrgod.setText("broj godina");
            labelIme = new JLabel();
            labelIme.setBounds(new Rectangle(22, 55, 38, 16));
            labelIme.setText("Ime");
            jContentPane = new JPanel();
            jContentPane.setLayout(null);
            jContentPane.add(getTxtFldIme(), null);
            jContentPane.add(getTxtFldBrGod(), null);
            jContentPane.add(labelIme, null);
            jContentPane.add(labelBrgod, null);
            jContentPane.add(getButtonOpen(), null);
            jContentPane.add(getButtonSave(), null);
        }
        return jContentPane;
    }

}
 
Odgovor na temu

boris Dj.bl
Dipl.ing.
Banjaluka

Član broj: 167469
Poruke: 77
62.68.103.*



Profil

icon Re: JTextField-ovi upis - ispis u txt07.09.2009. u 12:01 - pre 177 meseci
Ne vidim sta ti je tu konkretno problem...
Ti u ovom programu vec imas po 2 buttona-a, 2 textfield-a i 2 label-e.
Sadrzaj textfield-ova upisujes i ocitavas na klik button-a.
npr u kodu getButtonSave() mozes staviti:
Code:

String s1 = txtFldIme.getText();
String s2 = txtFldBrGod.getText();

i na taj nacin su ocitao sadrzaj ova 2 textfield-a i upisao u stringove s1 i s2 i dalje mozes sa tim raditi sta treba, recimo upisati ih u fajl.
Znaci rad sa vise textfield-ova ti podrazumjeva toliko vise linija koda umjesto jedne koje su jedna za dugom i svaka se odnosi na odredjeni textfield.

A ako zelis tekst iz fajla upisati u te textfield-ove, nakon sto ucitas stringove, neka su to opet s1 i s2, stavis sledece:
Code:

txtFldIme.setText(s1);
txtFldBrGod.setText(s2);


Nadam se da ti je ovo pomoglo.
 
Odgovor na temu

_Abraxas
myth

Član broj: 154070
Poruke: 61
*.wm.rs.



Profil

icon Re: JTextField-ovi upis - ispis u txt07.09.2009. u 13:46 - pre 177 meseci
@boris Dj.bl
Mislim da mu je problem kako da posle te stringove vrati u polja na formi. Recimo da neko unese Pera za ime i Peric za prezime i ti to sacuvas u fajl. Fajl ce izgledati "PeraPeric", recimo. Kako ce sada razluciti sta mu je ime, a sta prezime kada treba da te vrednosti ispise na formi?

@fratria.sm
Moj predlog je da kada budes upisivao u fajl da tabovima odvajas te vrednosti ili da svaku vrednost iz polja sa forme stavis u novi red i onda kada iscitavas taj fajl mozes znati gde pocinje i gde se zavrsava neka vrednost (ime ili prezime).

Napisah malo u zurbi, nadam se da sam bio koliko-toliko jasan. :)
 
Odgovor na temu

boris Dj.bl
Dipl.ing.
Banjaluka

Član broj: 167469
Poruke: 77
62.68.103.*



Profil

icon Re: JTextField-ovi upis - ispis u txt07.09.2009. u 14:29 - pre 177 meseci
@_Abraxas
Ako mu je to problem trebao se preciznije izraziti....
Uglavnom ako podatke o svakoj osobi treba cuvati u posebnom fajlu za samo tu osobu onda je najbolje svaki podatak cuvati u novom redu i tako ih ucitavati.
Ako pak u jednom fajlu zeli cuvati podatke o vise osoba onda je najbolje u jednom redu cuvati podatke o jednoj osobi odvojene znakom a poslije razdvajati podatke.

Npr ako je ovo fajl
Osobe.txt
Code:

Petar;Petrovic;1985
Simo;Simic;1986


Kad se ucita jedan red (s = "Petar;Petrovic;1985") moze se split-om razdvojiti

Code:
String[] sNiz = s.split(";");


 
Odgovor na temu

fratria.sm
Freelance Designer

Član broj: 232011
Poruke: 52
217.169.220.*



+266 Profil

icon Re: JTextField-ovi upis - ispis u txt07.09.2009. u 14:31 - pre 177 meseci
Citat:
boris Dj.bl
Code:

String s1 = txtFldIme.getText();
String s2 = txtFldBrGod.getText();



Ovo mi je pomoglo da upisem tekst iz vise polja u jedan fajl i stvarno je jednostavno ali eto ja ni to nisam znao.
Hvala ti za to.
Ali problem je kao sto _Abraxas kaze u tome sto te stringove posle treba da vratim u text polja iz fajla a tamo je zapravo jedan string.
Pa jel mozete na nekom jednostavnom primeru da mi objasnite kako da iz svakog text polja upisem string u novi red u fajlu i kako onda tako upisane da ih vratim u polja iz fajla jer nisam uspeo da uradim to sto je _Abraxas napisao.
Hvala ljudi!
 
Odgovor na temu

fratria.sm
Freelance Designer

Član broj: 232011
Poruke: 52
217.169.220.*



+266 Profil

icon Re: JTextField-ovi upis - ispis u txt07.09.2009. u 14:56 - pre 177 meseci
borise nisam video tvoj poslednji post pre nego sto sam napisao prethodni post,
meni treba da cuva svaku osobu u novom fajlu, naravno da je to sve samo ne prakticno ali takav je zadatak,
pa ako ti nije problem da napises kako bi sacuvao svaki string u novom redu fajla i kako da ih posle ucitam u textfildove.
 
Odgovor na temu

boris Dj.bl
Dipl.ing.
Banjaluka

Član broj: 167469
Poruke: 77
62.68.103.*



Profil

icon Re: JTextField-ovi upis - ispis u txt07.09.2009. u 23:30 - pre 177 meseci
OK, sad shvatam @fratriam.
Mozes ovako(nek se fajl za svaku osobu zove po imenu):
u kodu getButtonSave()
Code:

String ime = txtFldIme.getText();           // nek je ime pero
String brojGodina = txtFldBrGod.getText();

PrintWriter out = new PrintWriter(new OutputStreamWriter(new FileOutputStream(ime+".txt"))); // kreira objekat(konekciju) 
// za upis u fajl sa imenom pero.txt ako smo to ime unijeli
out.println(ime);    // upisuje ime u prvi red
out.println(brojGodina);   // upisuje broj godina u sledeci red i tako mozes upisivati podatke u koliko god hoces redova
out.close(); // zatvara konekciju



a u kodu getButtonOpen()
Code:

String ime = txtFldIme.getText(); // nek je ime pero

BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream("ime.txt"))); // kreira objekat(konekciju) za 
'' ocitavanje iz fajl sa imenom pero.txt ako smo to unijeli, a tim da ce baciti exception ako uneses ime a fajl sa tim imenom ne postoji
String[] sNiz = new String[5]; // kreiramo niz od 5 stringova -  to je ovdje dovoljno - a ako bi imao vise od 5 redova u fajlu
// onda bi ovo morao povecati
int i = 0;
while ((s = in.readLine()) != null)  
{
    sNiz[i] = s; // ucitava redove u sNiz redom dok god ih ima
    i++;
}
in.close();

txtFldBrGod.setText(sNiz[1]); // upisuje u txtFldBrGod drugi element niz a to je ovdje broj godina


Ovo su ti stvarno elementarne stvari...tako da ako hoces nesto stvarno nauciti morao bi malo bolje pogledati literaturu a ne ovdje
postavljati ovakva pitanja...vec kad nesto bude bas komplikovano il neki problem na nekom tvom projektu onda traziti pomoc...
Ovo ti samo mali savjet...a odgovor si valjda dobio ovaj put...

[Ovu poruku je menjao boris Dj.bl dana 08.09.2009. u 00:41 GMT+1]
 
Odgovor na temu

fratria.sm
Freelance Designer

Član broj: 232011
Poruke: 52
217.169.220.*



+266 Profil

icon Re: JTextField-ovi upis - ispis u txt08.09.2009. u 13:34 - pre 177 meseci
Hvala ti borise, znam da nije pametno da ovako trazim i da tako ne bi nista skapirao, ali nisam ni planirao to da praktikujem nego mi sad treba za uskoro a nebi sam to mogao za tako kratko vreme da naucim.
U ove kodove sto si napisao sam ubacio try/catch blokove i inicijalizovao i deklarisao neke peomenljive jer je prijavlljivao greske pri kompajliranju i sad gresaka nema i cuva u ime.txt bas kako treba ali nece da radi dugme open i nije mi jasno zasto.

Ovako izgleda dopunjen tvoj kod:

Code:


    private JButton getJButtonSave() {
        if (jButtonSave == null) {
            jButtonSave = new JButton();
            jButtonSave.setLocation(new Point(83, 232));
            jButtonSave.setText("SAVE");
            jButtonSave.setSize(new Dimension(65, 26));
            jButtonSave.addMouseListener(new java.awt.event.MouseAdapter() {   
                public void mouseClicked(java.awt.event.MouseEvent e) {    
                    String ime = txtFldIme.getText();           // nek je ime pero
                    String brojGodina = txtFldBrGod.getText();

                    PrintWriter out = null;
                    try {
                        out = new PrintWriter(new OutputStreamWriter(new FileOutputStream(ime+".txt")));
                    } catch (FileNotFoundException e1) {
                        
                        e1.printStackTrace();
                    } // kreira objekat(konekciju) 
                    // za upis u fajl sa imenom pero.txt ako smo to ime unijeli
                    out.println(ime);    // upisuje ime u prvi red
                    out.println(brojGodina);   // upisuje broj godina u sledeci red i tako mozes upisivati podatke u koliko god hoces redova
                    out.close(); // zatvara konekciju
                }
            
            });
        }
        return jButtonSave;
    }



Code:


    private JButton getJButtonOpen() {
        if (jButtonOpen == null) {
            jButtonOpen = new JButton();
            jButtonOpen.setLocation(new Point(186, 228));
            jButtonOpen.setText("OPEN");
            jButtonOpen.setSize(new Dimension(66, 26));
            jButtonOpen.addMouseListener(new java.awt.event.MouseAdapter() {   
                public void mouseClicked(java.awt.event.MouseEvent e) {    
                    String ime = txtFldIme.getText(); // nek je ime pero

                    BufferedReader in = null;
                    try {
                        in = new BufferedReader(new InputStreamReader(new FileInputStream("ime.txt")));
                    } catch (FileNotFoundException e1) {
                        
                        e1.printStackTrace();
                    } // kreira objekat(konekciju) za 
                    // ocitavanje iz fajl sa imenom pero.txt ako smo to unijeli, a tim da ce baciti exception ako uneses ime a fajl sa tim imenom ne postoji
                    String[] sNiz = new String[5]; // kreiramo niz od 5 stringova -  to je ovdje dovoljno - a ako bi imao vise od 5 redova u fajlu
                    // onda bi ovo morao povecati
                    int i = 0;
                    String s;
                    try {
                        while ((s = in.readLine()) != null)  
                        {
                            sNiz[i] = s; // ucitava redove u sNiz redom dok god ih ima
                            i++;
                        }
                    } catch (IOException e1) {
                        
                        e1.printStackTrace();
                    }
                    try {
                        in.close();
                    } catch (IOException e1) {
                        
                        e1.printStackTrace();
                    }

                    txtFldBrGod.setText(sNiz[1]); // upisuje u txtFldBrGod drugi element niz a to je ovdje broj godina
                }
            
            });
        }
        return jButtonOpen;
    }

 
Odgovor na temu

fratria.sm
Freelance Designer

Član broj: 232011
Poruke: 52
217.169.220.*



+266 Profil

icon Re: JTextField-ovi upis - ispis u txt08.09.2009. u 17:24 - pre 177 meseci
Proradio je prog potpuno a greska kod getJButtonOpen() je bila:

Code:

in = new BufferedReader(new InputStreamReader(new FileInputStream([b]"ime.txt"[/b])));

a treba

Code:

ime+".txt"


Jos jednom hvala borise na pomoci i opsirnom objasnjenju koda!!!
 
Odgovor na temu

boris Dj.bl
Dipl.ing.
Banjaluka

Član broj: 167469
Poruke: 77
62.68.103.*



Profil

icon Re: JTextField-ovi upis - ispis u txt09.09.2009. u 10:02 - pre 177 meseci
Nema na cemu...ako ti samo sad trebalo skonatao si...
I dobro si ispravio gresku...kucao sam iz glave bez provjere pa se omakne...
 
Odgovor na temu

[es] :: Java :: JTextField-ovi upis - ispis u txt

[ Pregleda: 12929 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.