Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 9 odgovora
  • 13.893 pregleda

Najnovija ↓

JTextField-ovi upis - ispis u txt 06.09.2009. u 12:43 · pre 208 meseci #1
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;
    }

}
Re: JTextField-ovi upis - ispis u txt 07.09.2009. u 13:01 · pre 208 meseci #2
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.
Re: JTextField-ovi upis - ispis u txt 07.09.2009. u 14:46 · pre 208 meseci #3
@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. :)
Re: JTextField-ovi upis - ispis u txt 07.09.2009. u 15:29 · pre 208 meseci #4
@_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(";");


Re: JTextField-ovi upis - ispis u txt 07.09.2009. u 15:31 · pre 208 meseci #5
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!
Re: JTextField-ovi upis - ispis u txt 07.09.2009. u 15:56 · pre 208 meseci #6
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.
Re: JTextField-ovi upis - ispis u txt 08.09.2009. u 00:30 · pre 208 meseci
izmenjeno 1 put, poslednji put boris Dj.bl 08.09.2009. u 00:41
  1. boris Dj.bl08.09.2009. u 00:41zapis iz teksta poruke
#7
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...
Re: JTextField-ovi upis - ispis u txt 08.09.2009. u 14:34 · pre 208 meseci #8
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;
    }

Re: JTextField-ovi upis - ispis u txt 08.09.2009. u 18:24 · pre 208 meseci #9
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!!!
Re: JTextField-ovi upis - ispis u txt 09.09.2009. u 11:02 · pre 208 meseci #10
Nema na cemu...ako ti samo sad trebalo skonatao si...
I dobro si ispravio gresku...kucao sam iz glave bez provjere pa se omakne...
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme