Programiranje

Izboljšave JavaFX v Javi SE 8u40

Prejšnja 1 2 3 4 Stran 3 Naprej Stran 3 od 4

Seznam 5 uporablja java.util.Pair razreda za priročno shranjevanje para elementov: besedilo iskanja in logična vrednost iskanja, občutljiva na velike in male črke. Nameščen je pretvornik rezultatov za pretvorbo vrednosti besedilnega polja poizvedbe v pogovornem oknu in vrednosti iskanja z velikimi in malimi črkami v Seznani predmet, ki se vrne iz pokliči () metoda. Ta pretvorba se zgodi šele, ko Iskanje gumb se klikne; ne zgodi se kdaj Prekliči klikne.

Iščete search.png?

Seznam 5 temelji na zunanjem search.png slikovna datoteka, ki je vključena v arhiv kod tega članka.

Sestavite seznam 5, kot sledi:

javac SearchDialog.java

Nastalo aplikacijo zaženite na naslednji način:

java SearchDialog

Slika 18 razkriva nastalo pogovorno okno.

Slika 18: V pogovornem oknu za iskanje privzeto ni besedila za iskanje in iskanje, ki ne razlikuje med velikimi in malimi črkami

Recimo, da vstopite JavaFX v besedilno polje in potrdite polje. Po kliku Iskanje, na standardnem izhodnem toku morate upoštevati naslednje rezultate:

Besedilo iskanja = JavaFX, iskanje z razliko med velikimi in malimi črkami = true

V: Ali mi lahko posredujete več informacij o podpori JavaFX-a za standardna pogovorna okna in po meri?

A: Oglejte si pogovorna okna JavaFX, kjer najdete dodatne primere standardnih pogovornih oken in pogovornih oken po meri (vključno s pogovornim oknom po meri) ter če želite izvedeti več o oblikovanju pogovornega okna in nastavitvi lastnika in načina pogovornega okna.

Nadzor vrtenja

V: Kaj je predilnik?

A: A predilnik je enovrstični kontrolnik besedilnega polja, ki uporabniku omogoča, da iz urejenega zaporedja takih vrednosti izbere številko ali vrednost predmeta. Spinners običajno ponujajo par drobnih puščičnih gumbov za prehod skozi elemente zaporedja. Tipkovnice puščica navzgor/puščica dol tipke tudi krožijo po elementih. Uporabnik lahko tudi vpiše (pravno) vrednost neposredno v ožemalnik. Čeprav kombinirana polja ponujajo podobno funkcionalnost, so včasih prednost predilniki, ker ne zahtevajo spustnega seznama, ki lahko prikrije pomembne podatke, in tudi zato, ker omogočajo funkcije, kot je zavijanje z največje vrednosti nazaj na najnižjo vrednost (npr. od največjega pozitivnega celega števila do 0).

V: Kako je izveden spiner?

A: Spinner je izveden kot primerek javafx.scene.control.Spinner kontrolni razred. Ta razred se opira na abstraktno javafx.scene.control.SpinnerValueFactory razred, da zagotovi model krmiljenja (obseg uporabniško izbranih vrednosti določene vrste). Trenutno so edini podprti modeli definirani z vgnezdenimi DoubleSpinnerValueFactory, IntegerSpinnerValueFactory, in ListSpinnerValueFactory razredih.

V: Kako ustvarim spiner?

A: Spinner ustvarite tako, da pokličete enega od Spinnerkonstruktorji. Na primer, Spinner (int min, int max, int začetna vrednost) ustvari spiner za izbiro ene od celoštevilnih vrednosti min skozi maks. Prvotno izbrana vrednost je označena z začetna vrednost. Če ta vrednost ni v min/maks domet, minvrednost postane začetno izbrana vrednost.

Spinner (int min, int max, int začetna vrednost) je priročen konstruktor, ki namesti primerek datoteke IntegerSpinnerValueFactory razred s temi vrednostmi kot model. Če raje sodelujete neposredno z IntegerSpinnerValueFactory, lahko ustvarite primer tega razreda in prenesete njegovo referenco na Spinner (SpinnerValueFactory valueFactory) konstruktor. Lahko pa ustvarite prazen spiner prek Spinner () konstruktor in prikliči Spinnerje void setValueFactory (vrednost SpinnerValueFactory) za namestitev tega tovarniškega predmeta.

V: Ali lahko navedete preprost primer vrtilnikov s plavajočo vejico s celo število in dvojno natančnostjo?

A: Oglejte si seznam 6.

Seznam 6. SpinnerDemo.java (različica 1)

uvoz javafx.application.Application; uvoz javafx.geometry.Insets; uvoz javafx.scene.Scene; uvoz javafx.scene.control.Label; uvoz javafx.scene.control.Spinner; uvoz javafx.scene.layout.GridPane; uvoz javafx.stage.Stage; javni razred SpinnerDemo razširja aplikacijo {@Override public void start (Stage primaryStage) {Spinner ispinner = new Spinner (1, 10, 2); Spinner dspinner = nov Spinner (1,5, 3,5, 1,5, 0,5); GridPane grid = nov GridPane (); grid.setHgap (10); grid.setVgap (10); grid.setPadding (novi vstavki (10)); grid.add (nova oznaka ("Integer Spinner"), 0, 0); grid.add (ispinner, 1, 0); grid.add (nova oznaka ("Double Spinner"), 0, 1); grid.add (dspinner, 1, 1); Scena scene = nova scena (mreža, 350, 100); primaryStage.setTitle ("SpinnerDemo"); primaryStage.setScene (prizor); primaryStage.show (); }}

Seznam 6 začetek () metoda najprej s pomočjo zgoraj omenjenega konstruktorja ustvari celoštevilčni spiner. Nato ustvari dvojno natančen spiner s plavajočo vejico prek Spinner (dvojni min, dvojni maks, dvojni začetni vrednost, dvojni znesekToStepBy) konstruktor. Ta konstruktor prejme enote, v katerih se poveča ali zmanjša vrtilnik prek vrednosti, ki ji je bila posredovana amountToStepBy, kar se zgodi 0.5.

Nadaljujem, začetek () ustvari in konfigurira vsebnik mrežnega podokna in zapolni mrežo 2-v-2-stolpca s temi vrtečimi in povezanimi oznakami. Nato ustvari sceno na podlagi mreže in konfigurira / prikaže sceno.

Sestavite seznam 6, kot sledi:

javac SpinnerDemo.java

Nastalo aplikacijo zaženite na naslednji način:

java SpinnerDemo

Slika 19 razkriva uporabniški vmesnik.

Slika 19: Kliknite puščice vsake vrtilke, da povečate / zmanjšate obseg vrednosti

V: Želim narediti prejšnje vrtalnike ureljive. Kako lahko opravim to nalogo?

A: Pokliči Spinnerje void setEditable (logična vrednost) metoda, podajanje prav do vrednost. Ustvaril sem drugo različico SpinnerDemo za demonstracijo. Za izvorno kodo glejte arhiv kod tega članka.

V: Ko omogočim urejanje prejšnjih vrtalnikov, v besedilno polje vtipkajte nedovoljene znake (na primer črke) in pritisnite na Enter ključ, vrže se izjema. Izjema je java.lang.NumberFormatException za centrifugiranje na osnovi celih števil in java.lang.RuntimeException (zavijanje java.text.ParseException) za dvojno natančno vrtilko s plavajočo vejico. Kako lahko preprečim vrnitev te izjeme?

A: Vrnitve te izjeme lahko preprečite z namestitvijo primerka podrazreda povzetka javafx.util.StringConverter razred (kjer T je tip, ki se pretvarja v ali iz njega Vrvica) kot SpinnerValueFactory pretvornik. Ta predmet bi ujel vrženo izjemo in začel ukrepati.

Spinner uporablja a javafx.scene.control.TextField objekt kot urejevalnik za pridobitev uporabniškega vnosa. Ker lahko besedilno polje shrani kateri koli znak, lahko v številski kontekst vnesete neprimerne znake, na primer črke. Ko uporabnik pritisne Enter, se vnos posreduje v SpinnerValueFactory pretvornik T fromString (niz niza) metoda. Za tovarne s plavajočo vejico s celo ali dvojno natančnostjo: T je bodisi Celo število ali Dvojno. Pretvorba iz niza z nedovoljenimi znaki v številko povzroči izvzetje izjeme fromString (). Pridobite sklic na trenutni pretvornik in namestite novega pretvornika, katerega fromString () metoda prikliče drugi pretvornik fromString () metoda v a poskusite izjavo z ustreznim ulov blok. Seznam 7 predstavlja aplikacijo, ki izpolni to nalogo.

Seznam 7. SpinnerDemo.java (različica 3)

uvoz javafx.application.Application; uvoz javafx.geometry.Insets; uvoz javafx.scene.Scene; uvoz javafx.scene.control.Label; uvoz javafx.scene.control.Spinner; uvoz javafx.scene.layout.GridPane; uvoz javafx.stage.Stage; uvoz javafx.util.StringConverter; javni razred SpinnerDemo razširja aplikacijo {@Override public void start (Stage primaryStage) {Spinner ispinner = new Spinner (1, 10, 2); ispinner.setEditable (true); StringConverter sci = ispinner.getValueFactory (). GetConverter (); StringConverter sci2 = new StringConverter () {@Override public Integer fromString (String value) {try {return sci.fromString (value); } catch (NumberFormatException nfe) {System.out.println ("Napačno celo število:" + vrednost); vrnitev 0; }} @Override javni niz toString (cela vrednost) {return sci.toString (vrednost); }}; ispinner.getValueFactory (). setConverter (sci2); Spinner dspinner = nov Spinner (1,5, 3,5, 1,5, 0,5); dspinner.setEditable (true); StringConverter scd = dspinner.getValueFactory (). GetConverter (); StringConverter scd2 = new StringConverter () {@Override public Double fromString (String value) {try {return scd.fromString (value); } catch (RuntimeException re) {System.out.println ("Bad double:" + vrednost); System.out.println ("Vzrok:" + re.getCause ()); vrnitev 0,0; }} @Override javni niz toString (dvojna vrednost) {return scd.toString (vrednost); }}; dspinner.getValueFactory (). setConverter (scd2); GridPane grid = nov GridPane (); grid.setHgap (10); grid.setVgap (10); grid.setPadding (novi vstavki (10)); grid.add (nova oznaka ("Integer Spinner"), 0, 0); grid.add (ispinner, 1, 0); grid.add (nova oznaka ("Double Spinner"), 0, 1); grid.add (dspinner, 1, 1); Scena scene = nova scena (mreža, 350, 100); primaryStage.setTitle ("SpinnerDemo"); primaryStage.setScene (prizor); primaryStage.show (); }}

Sestavi seznam 7 (javac SpinnerDemo.java) in zaženite nastalo aplikacijo (java SpinnerDemo). Pri vnašanju nedovoljenih znakov v besedilno polje spinerja morate upoštevati sporočila o napakah, podobna spodnjim.

Napačno celo število: a2 Napačno dvojno: b1.5 Vzrok: java.text.ParseException: Nerazčlenljiva številka: "b1.5"

V: Potrebujem vrtalnik na osnovi vrvic. Kako ga dobim?

A: Predelo na osnovi nizov lahko dobite prek Spinner (ObservableList elementi) konstruktor. Na primer, naslednji fragment kode vam pokaže, kako ustvarite spiner za izbiro imena delavnika:

Seznam weekDays = Arrays.asList ("ponedeljek", "torek", "sreda", "četrtek", "petek", "sobota", "nedelja"); ObservableList obsWeekDays = FXCollections.observableList (weekDays); Spinner sspinner = nov Spinner (obsWeekDays);

Ta fragment kode sem izvlekel iz četrte različice SpinnerDemo (za izvorno kodo glejte arhiv kod tega članka). Ko zaženete to aplikacijo, boste videli vrtenje, prikazano na sliki 20.

Slika 20: Poskus vnosa besedila v urejevalnik, ki se ne ujema natančno z enim od imen delovnih dni, ima za posledico java.lang.UnsupportedOperationException biti vržen

V: Ali mi lahko posredujete več informacij o podpori JavaFX-a za spinerje?

A: Oglejte si dokumentacijo JavaFX 8 na Spinner in SpinnerValueFactory za več informacij o tem upravljalniku in njegovem modelu. Morda boste želeli zagnati Googlovo iskanje, če želite izvedeti, kako drugi uporabljajo ta nadzor.

Oblikovanje besedila

V: Kako JavaFX podpira oblikovanje besedila?

A: JavaFX podpira oblikovanje besedila z zagotavljanjem javafx.scene.control.TextFormatter razred s svojim ugnezdenim Sprememba razred. Poleg tega povzetek javafx.scene.control.TextInputControl razred (nadrejeni razred TextField in javafx.scene.control.TextArea) je dobil a textFormatter lastnost, tako da kateri koli podrazred samodejno podpira oblikovanje besedila.

V: Katere vrste oblikovanja besedila so podprte?

A:TextFormatter podpira dve vrsti oblikovanja besedila: vrednost in sprememba. A oblikovalnik vrednosti se pokliče, ko pritisnete Enter po vnosu besedila. A spremenite oblikovalnik se zahteva za vsako spremembo brisanja besedila, dodajanja besedila in zamenjave besedila za usmerjeni nadzor vnosa besedila. Te oblikovalnike lahko uporabljate ločeno ali skupaj.

V: Kako so določeni oblikovalniki vrednosti in sprememb?

$config[zx-auto] not found$config[zx-overlay] not found