MaskedNumberField
MaskedNumberField on tekstikenttä, joka on suunniteltu jäsennellyn numeerisen syötteen vastaanottamiseen. Se varmistaa, että numerot muotoillaan johdonmukaisesti määritetyn maskin perusteella, mikä tekee siitä erityisen hyödyllisen talouslomakkeissa, hinnoittelukentissä tai missä tahansa syötteessä, jossa tarkkuus ja luettavuus ovat tärkeitä.
Tämä komponentti tukee numeromuotoilua, desimaali- ja ryhmittelymerkkejä sekä valinnaisia arvorajoja, kuten vähimmäis- tai enimmäisarvoja.
Perusteet
MaskedNumberField voidaan alustaa parametreilla tai ilman. Se tukee aloitusarvon, etiketin, paikkamerkin ja tapahtumakuuntelijan asettamista reagoimaan arvomuutoksiin.
Tässä demossa esitellään Vinkkilaskuri, joka käyttää MaskedNumberField intuitiivista numeerista syöttöä varten. Yksi kenttä on määritetty hyväksymään muotoiltu laskutusmäärä, kun taas toinen tallentaa kokonaisluvuksi vinkin prosenttiosuuden. Molemmat kentät soveltavat numeromaskia varmistaakseen johdonmukaisen ja ennakoitavan muotoilun.
Näytä koodi
- MaskedNumberFieldView.java
Maskisäännöt
MaskedNumberField käyttää maskimerkkijonoa hallitsemaan, miten numeerinen syöte muotoillaan ja näytetään.
Jokainen merkki maskissa määrittää erityisen muotoilukäyttäytymisen, jolloin käyttäjällä on tarkka hallinta numeroiden ulkonäköön.
Jos haluat muotoilla numeroita samalla maskisynntaksilla kentän ulkopuolella, esimerkiksi tietojen renduroidessa Table, käytä MaskDecorator -apuluokkaa.
Maskimerkit
| Merkki | Kuvaus |
|---|---|
0 | Korvataan aina numerolla (0–9). |
# | Estää ylimääräiset nollat. Korvataan täyttömerkillä desimaalipisteen vasemmalla puolella. Jatkuville numeroille korvataan tilalla tai nollalla. Muuten korvataan numerolla. |
, | Käytetään ryhmittelyerottimena (esim. tuhansille). Korvataan täyttömerkillä, jos sen edessä ei ole numeroita. Muussa tapauksessa näkyy pilkkuna. |
- | Näyttää miinusmerkin (-), jos numero on negatiivinen. Korvataan täyttömerkillä, jos positiivinen. |
+ | Näyttää + positiivisille tai - negatiivisille numeroille. |
$ | Aina tuloksena dollari. |
( | Lisää vasemman sulkumerkin ( negatiivisille arvoille. Korvataan täyttömerkillä, jos positiivinen. |
) | Lisää oikean sulkumerkin ) negatiivisille arvoille. Korvataan täyttömerkillä, jos positiivinen. |
CR | Näyttää CR negatiivisille numeroille. Näyttää kaksi välilyöntiä, jos numero on positiivinen. |
DR | Näyttää CR negatiivisille numeroille. Näyttää DR positiivisille numeroille. |
* | Lisää tähden *. |
. | Merkitsee desimaalipistettä. Jos tulosteessa ei näy numeroita, se korvataan täyttömerkillä. Desimaalin jälkeen täyttömerkit käsitellään välilyönteinä. |
B | Aina muuttuu välilyönniksi. Kaikki muut kirjaimelliset merkit näytetään sellaisenaan. |
Joidenkin edellä mainittujen merkkien voi esiintyä useammin kuin kerran maskissa muotoilua varten. Näitä ovat -, +, $, ja
(. Jos mitään näistä merkeistä on läsnä maskissa, ensimmäinen tavattu siirretään viimeiseen paikkaan, jossa # tai , oli korvattu täyttömerkillä. Jos tällaista paikkaa ei ole, kaksinkertainen merkki jätetään paikalleen.
Maski kentässä ei PYÖRISTÄ. Esimerkiksi, kun sijoitat arvon kuten 12.34567
kenttään, joka on maskattu ###0.00, saat 12.34.
Ryhmitys- ja desimaalierottimet
MaskedNumberField tukee ryhmittely- ja desimaalimerkkien mukauttamista, mikä tekee numeeristen muotoilujen sovittamisesta eri paikallisiin tai liiketoimintakäytäntöihin helppoa.
- Ryhmittelyerotin käytetään visuaalisesti erottamaan tuhansia (esim.
1,000,000). - Desimaalierotin osoittaa numeerisen osan (esim.
123.45).
Tämä on hyödyllistä kansainvälisissä sovelluksissa, joissa eri alueet käyttävät erilaisia merkkejä (esim. . vs ,).
field.setGroupCharacter("."); // e.g. 1.000.000
field.setDecimalCharacter(","); // e.g. 123,45
Oletuksena MaskedNumberField soveltaa ryhmittely- ja desimaalierottimia sovelluksen nykyisen paikallisuuden perusteella. Voit koko ajan ylittää ne käyttämällä tarjottuja asettajia.
Negatiiviset arvot
MaskedNumberField tukee vaihtoehtoa hallita, sallitaanko negatiivisten arvojen syöttäminen.
Oletuksena negatiiviset arvot kuten -123.45 ovat sallittuja. Estääksesi tämän, käytä setNegateable(false) rajoittaaksesi syötteitä vain positiivisiin arvoihin.
Tämä on hyödyllistä liiketoimintaskenaarioissa, joissa arvot kuten määrät, yhteensä tai prosentit on aina oltava ei-negatiivisia.
field.setNegateable(false);
Kun negatable on asetettu false, kenttä estää kaikki yritykset syöttää miinusmerkkiä tai muuten syöttää negatiivisia arvoja.
Näytä koodi
- MaskedNumNegatableView.java
Minimum- ja maksimumarvot
MaskedNumberField tukee numeeristen rajojen asettamista käyttämällä setMin() ja setMax().
Nämä rajoitukset auttavat varmistamaan, että käyttäjän syöte pysyy voimassa olevassa, odotetussa alueessa.
-
Minimiarvo
KäytäsetMin()määrittääksesi alhaisimman hyväksyttävän arvon:field.setMin(10.0); // Minimiarvo: 10Jos käyttäjä syöttää arvon, joka on tämän rajan alapuolella, se katsotaan virheelliseksi.
-
Maksimiarvo
KäytäsetMax()määrittääksesi korkeimman hyväksyttävän arvon:field.setMax(100.0); // Maksimiarvo: 100Arvot, jotka ovat tämän rajan yläpuolella, merkitään virheellisiksi.
Arvon palauttaminen
MaskedNumberField tukee palautusominaisuutta, joka palauttaa kentän arvon esimäärättyyn tilaan.
Tämä voi olla hyödyllistä, kun käyttäjät tarvitsevat peruuttaa muutoksia, palauttaa vahingossa tehtyjä muokkauksia tai palata tunnettuihin oletusarvoihin.
Tämän käyttäytymisen mahdollistamiseksi määritä tavoitearvo käyttäen setRestoreValue().
Tarvittaessa kenttä voidaan palauttaa ohjelmallisesti käyttämällä restoreValue().
numberField.setRestoreValue(1500.00);
numberField.restoreValue();
Tavat palauttaa arvo
- Ohjelmallisesti käyttäen
restoreValue() - Näppäimistön kautta, painamalla ESC (tämä on oletuksena palautusnäppäin, ellei se ole ylitettu)
Palautusarvon on oltava määritelty selkeästi. Jos sitä ei ole määritetty, ominaisuus ei peruuta kenttää.
Näytä koodi
- MaskedNumRestoreView.java
MaskedNumberFieldSpinner
MaskedNumberFieldSpinner laajentaa MaskedNumberField lisäämällä spinnereitä, jotka antavat käyttäjille mahdollisuuden lisätä tai vähentää arvoa käyttämällä vaihepainikkeita tai nuolinäppäimiä.
Tämä on ihanteellinen syötteille, kuten määrille, hinnoittelusäätöille, arviointikontrolleille tai mihin tahansa skenaarioon, jossa käyttäjät tekevät asteittaisia muutoksia.
Näytä koodi
- MaskedNumSpinnerView.java
Avainominaisuudet
-
Askelinjektiot
KäytäsetStep()määrittääksesi, kuinka paljon arvon pitäisi muuttua jokaisella spinnillä:spinner.setStep(5.0); // Jokainen spin lisää tai vähentää 5 -
Interaktiiviset ohjaimet
Käyttäjät voivat napsauttaa spinner-painikkeita tai käyttää näppäimistösisältöä arvon säätämiseen. -
Kaikki ominaisuudet MaskedNumberFieldistä
Täysin tukee maskeja, muotoilua, ryhmittely- ja desimaalimerkkejä, minimi- ja maksimi-rajoja sekä palautuslogiikkaa.