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

text field unos novca(na dvije decimale)?

[es] :: Java :: text field unos novca(na dvije decimale)?

[ Pregleda: 728 | Odgovora: 5 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

jean-todt
josip dugopolj

Član broj: 154124
Poruke: 6
*.adsl.net.t-com.hr.



Profil

icon text field unos novca(na dvije decimale)?24.01.2008. u 16:07

ne znam kako da ogranicim unos u text field(unos vrijednosti novca), problem je sto korisnik moze zadati bilo koji broj i taj broj mora imati dvije decimale (formata: ##,##) s time da prije zareza korisnik moze upisati niz proizvoljne veličine

probao sam s maskformaterom ali mislim da tu opciju ne podržava HELLP
24.01.2008. u 16:07 

Java Beograd

Član broj: 11890
Poruke: 1733
*.dip0.t-ipconnect.de.



Profil

icon Re: text field unos novca(na dvije decimale)?24.01.2008. u 16:53
Kao prvo, potraži na netu. Definitvno je nekome još odavno to zatrebalo, pa sigurno ima i gotovih klasa. Potraži na deleoperskim sajtovima kao što su code project i sli.

Ali ako si 'teo sam da to pišeš, ili moraš (ko zna zašto) moraćeh da hvataš kez event. Logika i nije tako složena:
nema slova ni interpukcija
minus sme da bude samo na prvom mestu
decimalni znak (zarez ili tačka) sme da se pojavi samo jednom
posle decimalnog znaka smeju da se pojave samo dve cifre
...

Ako korisnik ne unese decimalni znak, možeš sam da ga dodaš kao i dve nule na actionPerformed event nad fieldom.
24.01.2008. u 16:53 

zigizig
Aleksandar
Beograd

Član broj: 42968
Poruke: 113
*.adsl-1.sezampro.yu.



Profil

icon Re: text field unos novca(na dvije decimale)?25.01.2008. u 09:17
Mozda nesto ovako

txtField.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyTyped(java.awt.event.KeyEvent e) {
if (e.getKeyChar() == '.'
&& Logic.getInstance().twoDotsDisable(
txtField.getText()))
e.consume();
if (e.getKeyChar() != e.VK_BACK_SPACE
&& Logic.getInstance().twoDecimalMax(
txtField.getText()))
e.consume();
if (!('0' <= e.getKeyChar() && e.getKeyChar() <= '9')
&& e.getKeyChar() != e.VK_BACK_SPACE
&& e.getKeyChar() != '.') {
e.consume();
}
}
}


a u Logic klasi

public class Logic {

private static Logic instance = null;

public static Logic getInstance() {
if (instance == null)
instance = new Logic();
return instance;
}

public double roundDouble(double d, int places) {
return Math.round(d * Math.pow(10, (double) places))
/ Math.pow(10, (double) places);
}

public boolean twoDotsDisable(String text) {
if (text.contains("."))
return true;
else
return false;
}

public boolean twoDecimalMax(String text) {
if (text.contains(".")) {
int index = text.lastIndexOf(".");
String ostatak = text.substring(index + 1);
if (ostatak.length() >= 2)
return true;
else
return false;
} else
return false;
}
}
25.01.2008. u 09:17 

jean-todt
josip dugopolj

Član broj: 154124
Poruke: 6
*.adsl.net.t-com.hr.



Profil

icon Re: text field unos novca(na dvije decimale)?25.01.2008. u 17:28
Ovo sam isprobao ali mi stalno blokira "," i "." a meni treba da se unašaju brojevi sve dok se unese "," kada se unese zarez
trebaju se unjeti još samo dva broja(odnosno dvije decimale).....
25.01.2008. u 17:28 

zigizig
Aleksandar
Beograd

Član broj: 42968
Poruke: 113
89.110.196.*



Profil

icon Re: text field unos novca(na dvije decimale)?25.01.2008. u 23:57
Pa nije valjda da ne mozes da prepravis kod :)
Vrlo je jednostavan i mozes videti da treba da zamenis tacku sa zarezom gde god se pojavljuje
e.getKeyChar() == '.'
text.contains(".")

Jedini problem koji mozes da imas je sto koristis zarez za decimale jer takav broj neces moci da adekvatno sacuvas u double jer po standardu za decimale se koristi tacka..
U konkretnom primeru dozvoljava se kucanje samo jedne tacke (kao decimalne tacke) i posle nje dozvoljava dva decimalna broja. Prepravi kod tako da dozvoljava kucanje samo jednog zareza ali onda se snadji kako da takav broj sacuvas u promenljivu jer ovo Double.parseDouble(txtField.getText()) nece raditi kako treba.
25.01.2008. u 23:57 

m.djukic
Smederevo

Član broj: 139545
Poruke: 4
79.101.185.*



Profil

icon Re: text field unos novca(na dvije decimale)?01.02.2008. u 20:23
Pri radu sa formatovanim podacima, umesto TextField bolje je raditi sa FormattedTextField,
upravljanje unosom numerickih podataka moze se vrsiti sa FormatterFactory, primer:

private javax.swing.JFormattedTextField duguje;
...
NumberFormat nfn = NumberFormat.getNumberInstance();
nfn.setMinimumIntegerDigits(1);
nfn.setMaximumIntegerDigits(10);
nfn.setGroupingUsed(false);
nfn.setMaximumFractionDigits(2);
nfn.setMinimumFractionDigits(2);
nfn.setGroupingUsed(false);
DefaultFormatterFactory numberFactory =
new DefaultFormatterFactory(new NumberFormatter(nfn),new NumberFormatter(nfn),new NumberFormatter(nfn));
duguje.setFormatterFactory(numberFactory);
01.02.2008. u 20:23 

[es] :: Java :: text field unos novca(na dvije decimale)?

[ Pregleda: 728 | Odgovora: 5 ]

Postavi temu Odgovori

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