Poslao: 11 Sep 2014 01:07
|
offline
- JelenaPA
![Female](https://www.mycity.rs/templates/simplified/images2/user-sex.gif)
- Novi MyCity građanin
- Pridružio: 15 Avg 2014
- Poruke: 22
- Gde živiš: Beograd
|
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:
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);
}
}
Imam napisane metode citaj,upisi koje rade i klase exceptiona,problem mi se javlja u ovom delu koda:
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
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 11 Sep 2014 12:30
|
offline
- Pridružio: 16 Feb 2011
- Poruke: 1630
- Gde živiš: Pancevo
|
Pa ovo izgleda ok nisam testirao ali probaj ovako
public void actionPerformed(ActionEvent e)
{
String s=ime.getText()+" "+prezime.getText()+" "+index.getText()+" "+cek.getSelectedItem()+"\n";
try {
Upisi.upisi(s);
}
catch (NemaIndeks ex ) {
JOptionPane.showMessageDialog(null, ex);
return;
}
}});
|
|
|
|
Poslao: 11 Sep 2014 12:35
|
offline
- vasa.93
![Male](https://www.mycity.rs/templates/simplified/images2/user-sex.gif)
- Moderator foruma
- Pridružio: 17 Dec 2007
- Poruke: 14824
- Gde živiš: Niš
|
Napisano: 11 Sep 2014 12:32
Problem je u tom što sve radi i kada se neko polje ostavi prazno, jel da? Moraš prvo svaki pročitani string da porediš sa praznim stringom. Da li to radiš u upisi() metodi ili ne? Ako da, ta metoda mora da bude deklarisana tako da baca izuzetke kako bi se izuzetak propagirao do hendlera u actionPerformed(ActionEvent e) metodi. Ako ne, tu proveru moraš da izvršiš pre poziva metode upis() i da u određenoj situaciji baciš odgovarajući izuzetak.
Dopuna: 11 Sep 2014 12:35
_iKaC ::Pa ovo izgleda ok nisam testirao ali probaj ovakoSintaksno to jeste ispravno, ali ne radi onako kako treba da radi: JelenaPA ::imam problem oko hvatanja izuzetaka ako neko ne unese nesto od podataka...Zbog toga mora da se proveri da li je nešto uneseno, pa ako nije da se baci izuzetak.
|
|
|
|
Poslao: 11 Sep 2014 12:39
|
offline
- JelenaPA
![Female](https://www.mycity.rs/templates/simplified/images2/user-sex.gif)
- Novi MyCity građanin
- Pridružio: 15 Avg 2014
- Poruke: 22
- Gde živiš: Beograd
|
Napisano: 11 Sep 2014 12:37
Nece i dalje,saljem ti zadatak,ako budes imao vremena da vidis sta mzd nije u redu.Hvala ti.
mycity.rs/must-login.png
Dopuna: 11 Sep 2014 12:39
Probacu to da uradim Vaso.
|
|
|
|
Poslao: 11 Sep 2014 14:15
|
offline
- Pridružio: 16 Feb 2011
- Poruke: 1630
- Gde živiš: Pancevo
|
E ovako:
Brdo gresaka u kodu iskreno i namucio sam se extra. Na dosa mesta nepostavljene zagrade za zatvaranje bloka, catch na pogresnom mestu ali elem fiksirano.
Greska koja je sve ovo izazvala je :
Exception is never thrown in body of corresponding try statement
Citat:
This will lead to an compiler error, because your java knows that you are trying to catch an exception that will NEVER EVER EVER occur. Thus you would get: exception ExceptionA is never thrown in body of corresponding try statement
Ja sam ti uradio samo za exception NemaIme i super kompajlira i hvata gresku. Ti menjaj dalje
package javaapplication4;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import static javax.swing.JFrame.EXIT_ON_CLOSE;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javaapplication4.NemaNaziv;
/*
*Klasa Projektni se sastoji od polja za upisivanje podataka,lista koja prima podatke kao i panel
*na koji se stavljaju polja za upisivanje podataka,dugmici,combo box
*@Jelena
*/
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);
throw new NemaNaziv();
}catch (NemaNaziv 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 nazivZaUnosNaziva() 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 nemaIndeX() 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);
}
}
|
|
|
|
Poslao: 11 Sep 2014 14:33
|
offline
- vasa.93
![Male](https://www.mycity.rs/templates/simplified/images2/user-sex.gif)
- Moderator foruma
- Pridružio: 17 Dec 2007
- Poruke: 14824
- Gde živiš: Niš
|
Napisano: 11 Sep 2014 14:28
E bre, pa što ovako?
public void actionPerformed(ActionEvent e)
{
try {
String s=ime.getText()+" "+prezime.getText()+" "+index.getText()+" "+cek.getSelectedItem()+"\n";
Upisi.upisi(s);
throw new NemaNaziv(); //ovo hvata :D
}catch (NemaNaziv ex) {
JOptionPane.showMessageDialog(null, ex);
} I ok je što ovo hvata izuzetak. Ali taj izuzetak će uvek biti bačen (osim ukoliko funkcija upisi() ne baci neki izuzetak pre toga). Gde si koristio funkcije koje si definisao? One su ok skroz, i sa njima bi trebalo da radi, ali one treba da se pozovu pre upisa u try bloku, odnosno baš u liniji gde se konkateniraju stringovi.
Dopuna: 11 Sep 2014 14:33
String s=ime.getText()+" "+prezime.getText()+" "+index.getText()+" "+cek.getSelectedItem()+"\n"; Elem, kod ove linije bi najoptimalnija bila provera da li postoje dva uzastopna razmaka. Ukoliko postoje, znači da je neko od polja ostalo prazno i da je su u string konkatenirana dva blanko karaktera (pre određenog polja i posle polja). Naravno, ukoliko je blanko prvi i tu treba da se baci izuzetak.
No, to bi bilo optimalno rešenje, ali i hardcoded...
|
|
|
|
Poslao: 11 Sep 2014 14:34
|
offline
- Pridružio: 16 Feb 2011
- Poruke: 1630
- Gde živiš: Pancevo
|
Pre par min sam skontao sa sam uradio ali nema veze fail try
|
|
|
|
Poslao: 11 Sep 2014 14:36
|
offline
- vasa.93
![Male](https://www.mycity.rs/templates/simplified/images2/user-sex.gif)
- Moderator foruma
- Pridružio: 17 Dec 2007
- Poruke: 14824
- Gde živiš: Niš
|
Ovo će sa onim funkcijama da završi posao: String s=nazivZaUnosNaziva()+" "+nazivZaUnosPrezimena()+" "+nemaIndeX()+" "+cek.getSelectedItem()+"\n";
|
|
|
|
Poslao: 11 Sep 2014 17:41
|
offline
- JelenaPA
![Female](https://www.mycity.rs/templates/simplified/images2/user-sex.gif)
- Novi MyCity građanin
- Pridružio: 15 Avg 2014
- Poruke: 22
- Gde živiš: Beograd
|
Hvala vam puno na trudi ail mi nije jasno de da ubacim ove funkcije koje si napisao Vaso?
|
|
|
|
Poslao: 11 Sep 2014 17:43
|
offline
- vasa.93
![Male](https://www.mycity.rs/templates/simplified/images2/user-sex.gif)
- Moderator foruma
- Pridružio: 17 Dec 2007
- Poruke: 14824
- Gde živiš: Niš
|
U try bloku actionPerformed() metode, umesto tvoje naredbe sa konkatenacijom stringova.
|
|
|
|