Sada je: 18 tra 2024, 01:52.
C, C++, Java, PHP, Ruby...

Moderator/ica: Moderatori/ce

Pravila foruma
U naslovu teme unutar uglatih zagrada navesti o kojem jeziku je riječ. Primjer: [Java]
Pozdav,imam zadatak da napravim panel za unos i prikaz imena ,prezime,indeksa studenata,sve sam to uradila,jedino imam problem oko hvatanja izuzetaka ako neko ne unese nesto od podataka evo moj kod:

Kod: Označi sve
public class Projektni extends JFrame {
    public final JTextField ime = new JTextField(10);
    public final JTextField prezime = new JTextField(10);
    public final JTextField index = new JTextField(10);
    public DefaultListModel podaci = new DefaultListModel();
    public JList lista = new JList(podaci);
//prazan konstruktor gde implementiramo i definisemo dugmice,polja za upisivanje podataka i osluskivace
    public Projektni()
    {
        ime.setPreferredSize(new Dimension(200,80));
        prezime.setPreferredSize(new Dimension(200,80));
        index.setPreferredSize(new Dimension(150,40));
 JPanel panel=new JPanel (new GridLayout(6, 7));
panel.add(new JLabel("Ime studenta:"));
panel.add(ime);
panel.add(new JLabel("Prezime studenta:"));
panel.add(prezime);
panel.add(new JLabel("Broj indeksa studenta:"));
panel.add(index);
panel.setBackground(Color.cyan);
String[] seminari = {"Microsoft","MAC","Java"};
final JComboBox cek = new JComboBox(seminari);
panel.add(cek);
 
JButton upisibtn=new JButton("Upisi");
upisibtn.setPreferredSize(new Dimension(30,30));

upisibtn.addActionListener(new ActionListener()
{
   
    @Override
   
    public void actionPerformed(ActionEvent e)
    {
        try{
        String s=ime.getText()+" "+prezime.getText()+" "+index.getText()+" "+cek.getSelectedItem()+"\n";
        Upisi.upisi(s);
    }
        catch (NemaIndeks ex  ) {
                JOptionPane.showMessageDialog(null, ex);
            }
 
}});


   
//Dugme prikazi ,koji prikazuje upisane podatke preko klase citaj.
JButton citajbtn=new JButton("Prikazi");
citajbtn.setPreferredSize(new Dimension(30,30));
citajbtn.addActionListener(new ActionListener()
{
  @Override
  public void actionPerformed(ActionEvent e)
  {
   for(String s:Citaj.citaj())
   podaci.addElement(s);
 
  }
});

//Dodavanje komponenata na panel.
panel.add(upisibtn);
panel.add(citajbtn);
add(panel,BorderLayout.CENTER);
panel.add(lista);

            }
   
    public String nazivZaUnos() throws NemaNaziv {
        String naziv = ime.getText();
        if (naziv.equals("")) {
            throw new NemaNaziv("Niste uneli naziv studenta. ");
        }
        return naziv;
    }
    public String nazivZaUnosPrezimena() throws NemaPrezime {
        String prez = prezime.getText();
        if (prez.equals("")) {
            throw new NemaPrezime("Niste uneli prezime studenta. ");
        }
        return prez;
    }
     public String NemaIndeks() throws NemaIndeks {
        String indeks = index.getText();
        if (indeks.equals("")) {
            throw new NemaIndeks("Niste unelii ndeks studenta. ");
        }
        return indeks;
    }

 
   
 
   
   
               

       


//pokretacki metod
    public static void main(String[] args) {
        JFrame frame = new Projektni();
       

    frame.setSize(400, 300);
    frame.setLocationRelativeTo(null);
    frame.setTitle("Seminari");
    frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
    frame.pack();
    frame.setVisible(true);
   
    }


    }


mam napisane metode citaj,upisi koje rade i klase exceptiona,problem mi se javlja u ovom delu koda:
Kod: Označi sve
upisibtn.addActionListener(new ActionListener()
{
   
    @Override
   
    public void actionPerformed(ActionEvent e)
    {
        try{
        String s=ime.getText()+" "+prezime.getText()+" "+index.getText()+" "+cek.getSelectedItem()+"\n";
        Upisi.upisi(s);
    }
        catch (NemaIndeks ex  ) {
                JOptionPane.showMessageDialog(null, ex);
            }
 
}});

Ako neko zna sta treba da popravim i kako,neka napise.Hvala!
Postovi: 15
Postovi: 15
Pridružen/a: 01 lip 2014, 19:57
Podijelio/la zahvalu: 0 puta
Primio/la zahvalu: 0 puta
Spol: Z
OS: Windows &
Bok. Ovako na prvu reko bi da se compiler budi oko istog imena za metodu i klasu. Konkretno ova linija:
Kod: Označi sve
public String NemaIndeks() throws NemaIndeks

Promjeni ime metode ili ime klase u nešto drugo. Ako nije do toga, pomoglo bi da zapakiraš kod i pošalješ da neko drugi može debuggirat kod sebe. Teško je ovako uočit problem kad samo dio koda pokažeš.
Test prvoklasne inteligencije sastoji se u sposobnosti istovremenog držanja dviju suprotnih ideja u glavi, a da se pritom zadrži sposobnost funkcioniranja.
Avatar
Postovi: 98
Postovi: 98
Pridružen/a: 10 tra 2012, 13:28
Lokacija: /home/Samobor
Podijelio/la zahvalu: 4 puta
Primio/la zahvalu: 2 puta
Spol: M
OS: Arch Linux
Nije do toga.Hvala,u svakom slucaju.
Evo zadatka.
Privitak/ci
ZadatakJelena.zip
Zadatak
(29.01 KiB) Preuzeto 258 put/a.
Postovi: 15
Postovi: 15
Pridružen/a: 01 lip 2014, 19:57
Podijelio/la zahvalu: 0 puta
Primio/la zahvalu: 0 puta
Spol: Z
OS: Windows &
Ovdje ti ne treba try catch jer nijedna od metodi koje zoveš ne deklarira bacanje iznimke.
Kod: Označi sve
try {
    String s = ime.getText() + " " + prezime.getText() + " " + index.getText() + " " + cek.getSelectedItem() + "\n";
    Upisi.upisi(s);
} catch (NemaIndeks | NemaNaziv | NemaPrezime ex) {
    JOptionPane.showMessageDialog(null, ex);
}


Iza ovog dijela ti fali zatvorena vitica od konstruktora.
Kod: Označi sve
//Dodavanje komponenata na panel.
panel.add(upisibtn);
panel.add(citajbtn);
add(panel, BorderLayout.CENTER);
panel.add(lista);


Sintaktičke greške kao parovi zagrada se lakše otkriju ako pišeš uredan kod i uvlačiš linije, što nebi mogao reć za tvoj kod :D. Možda si se žurila. Što se tiče ostalih greška moraš ih naučit debuggirat. Konkretno, za try catch block meni je javac javio "Error:(60, 19) java: exception javaapplication4.NemaIndeks is never thrown in body of corresponding try statement" što mislim da samo po sebi dovoljno govori o čemu se radi. Ali ako nisi sigurna, uvijek prvo probaj googlat taj error, sigurno se već neko s tim sreo. Obično ćeš nać odgovor na stackoverflow-u. Sretno dalje!
Test prvoklasne inteligencije sastoji se u sposobnosti istovremenog držanja dviju suprotnih ideja u glavi, a da se pritom zadrži sposobnost funkcioniranja.
Avatar
Postovi: 98
Postovi: 98
Pridružen/a: 10 tra 2012, 13:28
Lokacija: /home/Samobor
Podijelio/la zahvalu: 4 puta
Primio/la zahvalu: 2 puta
Spol: M
OS: Arch Linux
Hvala ti,ja sam uradila ali sad imam problem sto vata izuzetak ali se ipak izvrsi upis -.-
Kod: Označi sve
 public void actionPerformed(ActionEvent e)
    {
        try{
            String s=nazivZaUnosNaziva()+" "+nazivZaUnosPrezimena()+" "+nemaIndeX()+" "+cek.getSelectedItem()+"\n";
        }
        catch(NemaNaziv|NemaIndeks|NemaPrezime ex){
            JOptionPane.showMessageDialog(null, ex);
           
        }
        finally{
        String s=ime.getText()+" "+prezime.getText()+" "+index.getText()+" "+cek.getSelectedItem()+"\n";
       
        Upisi.upisi(s);
       
        }
   
           }
}]
Postovi: 15
Postovi: 15
Pridružen/a: 01 lip 2014, 19:57
Podijelio/la zahvalu: 0 puta
Primio/la zahvalu: 0 puta
Spol: Z
OS: Windows &
Ne znam kako točno treba radit program, ali upis se izvrši svaki put zato što si ga stavila u finally blok. Taj blok se izvršava neovisno o tome da li se pojavila iznimka ili su naredbe u try bloku uspješno izvršene. Obično se koristi da bi se izašlo na čisti način iz try catch bloka, npr. zatvaranje datoteke ili konekcije prema bazi.
Test prvoklasne inteligencije sastoji se u sposobnosti istovremenog držanja dviju suprotnih ideja u glavi, a da se pritom zadrži sposobnost funkcioniranja.
Avatar
Postovi: 98
Postovi: 98
Pridružen/a: 10 tra 2012, 13:28
Lokacija: /home/Samobor
Podijelio/la zahvalu: 4 puta
Primio/la zahvalu: 2 puta
Spol: M
OS: Arch Linux

Na mreži
Trenutno korisnika/ca: / i 6 gostiju.