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: 2836 | Odgovora: 5 ] > FB > Twit

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 - pre 196 meseci
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
 
Odgovor na temu

Java Beograd
Novi Beograd

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



+10246 Profil

icon Re: text field unos novca(na dvije decimale)?24.01.2008. u 16:53 - pre 196 meseci
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.
OTPOR blokadi ulica, OTPOR blokiranom Beogradu, OTPOR blokiranoj Srbiji
 
Odgovor na temu

zigizig

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



+10 Profil

icon Re: text field unos novca(na dvije decimale)?25.01.2008. u 09:17 - pre 196 meseci
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;
}
}
 
Odgovor na temu

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 - pre 196 meseci
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).....
 
Odgovor na temu

zigizig

Član broj: 42968
Poruke: 167
89.110.196.*



+10 Profil

icon Re: text field unos novca(na dvije decimale)?25.01.2008. u 23:57 - pre 196 meseci
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.
 
Odgovor na temu

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 - pre 196 meseci
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);
 
Odgovor na temu

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

[ Pregleda: 2836 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

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