5 sąraše naudojamas java.util.Pora
klasėje patogiai laikyti porą daiktų: paieškos tekstą ir Būlo didžiosioms ir mažosioms raidėms reikšmę. Įdiegtas rezultatų keitiklis, kuris dialogo lango paieškos teksto lauko ir didžiųjų ir mažųjų raidžių žymėjimo langelių reikšmes paverčia į Pora
objektas, kuris grąžinamas iš skambinti ()
metodas. Ši konversija įvyksta tik tada, kai Paieška
paspaudžiamas mygtukas; tai neįvyksta, kai Atšaukti
yra spustelėtas.
Ieškote search.png?
5 sąrašas priklauso nuo išorės search.png
vaizdo failas, kuris yra įtrauktas į šio straipsnio kodų archyvą.
Sudarykite 5 sąrašą taip:
javac SearchDialog.java
Paleiskite gautą programą taip:
java SearchDialog
18 paveiksle parodytas gautas dialogas.
18 pav. Paieškos dialogo langelyje pagal numatytuosius nustatymus nėra paieškos teksto ir didžiųjų ir mažųjų raidžių
Tarkime, kad įvedėte „JavaFX“
teksto lauke ir pažymėkite žymės langelį. Paspaudus Paieška
, turėtumėte stebėti tokį išvestį standartiniame išvesties sraute:
Paieškos tekstas = „JavaFX“, didžiųjų ir mažųjų raidžių paieškos = tiesa
Klausimas: Ar galite pateikti daugiau informacijos apie „JavaFX“ palaikymą standartiniams ir pasirinktiniams dialogo langams?
A: Peržiūrėkite „JavaFX Dialogs“, kur rasite papildomų standartinių ir pasirinktinių dialogo pavyzdžių (įskaitant pasirinktinį prisijungimo dialogo langą) ir sužinokite apie dialogo stilių bei dialogo lango savininko ir modalumo nustatymą.
Suktuko valdymas
Klausimas: Kas yra suktukas?
A: A suktukas yra vienos eilutės teksto lauko valdiklis, leidžiantis vartotojui pasirinkti skaičių ar objekto vertę iš sutvarkytos tokių verčių sekos. Verpėjai paprastai pateikia mažas rodyklių mygtukus, kad pereitų per sekos elementus. Klaviatūra rodyklė aukštyn
/rodyklė žemyn
raktai taip pat pereina per elementus. Vartotojui taip pat gali būti leidžiama įvesti (teisinę) vertę tiesiai į suktuką. Nors kombinuotosios dėžutės suteikia panašią funkciją, kartais pirmenybė teikiama verpėjams, nes jiems nereikia išskleidžiamojo sąrašo, kuris gali užgožti svarbius duomenis, taip pat dėl to, kad jie leidžia naudoti tokias funkcijas kaip apvyniojimas nuo didžiausios vertės iki minimalios vertės (pvz. nuo didžiausio teigiamo sveiko skaičiaus iki 0).
Klausimas: Kaip sukasi suktukas?
A: Suktukas yra įgyvendinamas kaip javafx.scene.control.Spinner
kontrolinė klasė. Ši klasė remiasi abstrakčiu javafx.scene.control.SpinnerValueFactory
klasę, kad būtų pateiktas valdiklio modelis (vartotojo pasirinktų tam tikro tipo verčių diapazonas). Šiuo metu vieninteliai palaikomi modeliai apibrėžiami jo įdėta „DoubleSpinnerValueFactory“
, „IntegerSpinnerValueFactory“
ir „ListSpinnerValueFactory“
klasės.
Klausimas: Kaip sukurti suktuką?
A: Sukuriate verpėją paskambinę vienam iš Suktukas
konstruktoriai. Pavyzdžiui, Suktukas (int min, int max, int initialValue)
sukuria suktuką, pasirinkdami vieną iš sveikųjų skaičių reikšmių iš min
per maks
. Iš pradžių pasirinktą vertę identifikuoja pradinė vertė
. Jei šios vertės nėra min
/maks
diapazonas, min
reikšmė tampa iš pradžių pasirinkta.
Suktukas (int min, int max, int initialValue)
yra patogus konstruktorius, kuris įdiegia „IntegerSpinnerValueFactory“
klasėje, kur šios vertės yra modelis. Jei norite dirbti tiesiogiai su „IntegerSpinnerValueFactory“
, galite sukurti šią klasę ir perduoti jos nuorodą į „Spinner“ („SpinnerValueFactory valueFactory“)
konstruktorius. Arba galite sukurti tuščią suktuką per Verpėjas ()
konstruktorius ir pasikvieskite Suktukas
's void setValueFactory („SpinnerValueFactory“ vertė)
metodas įdiegti šį gamyklos objektą.
Klausimas: Ar galite pateikti paprastą sveikojo ir dvigubo tikslumo slankiojo kablelio suktukų pavyzdį?
A: Peržiūrėkite 6 sąrašą.
6 sąrašas. SpinnerDemo.java
(1 versija)
importuoti javafx.application.Application; importuoti javafx.geometry.Insets; importuoti javafx.scene.Scene; importuoti javafx.scene.control.Label; importuoti javafx.scene.control.Spinner; importuoti javafx.scene.layout.GridPane; importuoti javafx.stage.Stage; viešoji klasė „SpinnerDemo“ pratęsia paraišką {@Paisyti viešą negaliojančią pradžią („Stage primaryStage“) {Spinner ispinner = naujas verpėjas (1, 10, 2); Spining dspinner = naujas verpėjas (1,5, 3,5, 1,5, 0,5); „GridPane“ tinklelis = new GridPane (); tinklelis.setHgap (10); tinklelis.setVgap (10); grid.setPadding (nauji įdėklai (10)); grid.add (nauja etiketė („Integer Spinner“), 0, 0); tinklelis.add (ispinner, 1, 0); grid.add (nauja etiketė („Double Spinner“), 0, 1); tinklelis.add (dspinner, 1, 1); Scenos scena = nauja scena (tinklelis, 350, 100); primaryStage.setTitle („SpinnerDemo“); primaryStage.setScene (scena); primaryStage.show (); }}
6 sąrašas pradžia ()
metodas pirmiausia sukuria sveiko skaičiaus suktuką per minėtą konstruktorių. Tada jis sukuria dvigubo tikslumo slankiojo kablelio suktuką Suktukas (dviguba min., Dviguba maks., Dviguba pradinė vertė, dviguba suma „ToStepBy“)
konstruktorius. Šis konstruktorius gauna vienetus, kuriais padidinsite arba sumažinsite suktuką, perduodamą vertę sumaToStepBy
, kas būna 0.5
.
Tęsiant, pradžia ()
sukuria ir sukonfigūruoja tinklelio srities konteinerį ir užpildo 2 eilučių po 2 stulpelius tinklelį su šiais suktukais ir susijusiomis etiketėmis. Tada sukuria sceną pagal tinklelį ir konfigūruoja / rodo sceną.
Sudarykite 6 sąrašą taip:
javac SpinnerDemo.java
Paleiskite gautą programą taip:
java SpinnerDemo
19 paveiksle atskleidžiama vartotojo sąsaja.
19 paveikslas: Spustelėkite kiekvienos suktuko rodykles, kad padidintumėte / sumažintumėte vertybių diapazoną
Klausimas: Noriu, kad ankstesni suktukai būtų redaguojami. Kaip atlikti šią užduotį?
A: Skambinkite Suktukas
's void setEditable (loginė vertė)
metodas, perdavimas tiesa
į vertė
. Aš sukūriau antrą versiją „SpinnerDemo“
demonstruoti. Peržiūrėkite šio straipsnio kodų archyvą.
Klausimas: Kai padarysiu ankstesnius suktukus redaguojamus, į teksto lauką įrašykite neteisėtus simbolius (pvz., Raides) ir paspauskite Įveskite
raktas, išmetama išimtis. Išimtis yra java.lang.NumberFormatException
sveikam skaičiui priklausančiam suktukui ir java.lang.RuntimeException
(įvyniojimas java.text.ParseException
) dvigubo tikslumo slankiojo kablelio suktukui. Kaip galėčiau užkirsti kelią šios išimties metimui?
A: Galite užkirsti kelią šiai išimčiai mesti įdiegdami santraukos poklasio egzempliorių javafx.util.StringConverter
klasė (kur T
yra tipas, konvertuojamas į arba iš Stygos
) kaip „SpinnerValueFactory“
keitiklis. Šis objektas pagaus išmetamą išimtį ir imsis veiksmų.
Suktukas
naudoja a javafx.scene.control.TextField
objektas kaip redaktorius, skirtas gauti vartotojo įvestį. Kadangi teksto lauke gali būti bet koks simbolis, skaitiniame kontekste galima įvesti netinkamus simbolius, pvz., Raides. Vartotojui paspaudus Įveskite
, įvestis perduodama „SpinnerValueFactory“
keitikliai T fromString (eilutės eilutė)
metodas. Visų skaičių arba dvigubo tikslumo slankiojo kablelio gamykloms T
yra arba Sveikasis skaičius
arba Dvigubai
. Konvertuojant iš eilutės su neteisėtais simboliais į skaičių gaunama išimtis fromString ()
. Gaukite nuorodą į dabartinį keitiklį ir įdiekite naują keitiklį, kurio fromString ()
metodas iškviečia kitus keitiklius fromString ()
metodas a bandyti
pareiškimas su atitinkamu pagauti
blokuoti. 7 sąraše pateikiama programa, atliekanti šią užduotį.
7 sąrašas. SpinnerDemo.java
(3 versija)
importuoti javafx.application.Application; importuoti javafx.geometry.Insets; importuoti javafx.scene.Scene; importuoti javafx.scene.control.Label; importuoti javafx.scene.control.Spinner; importuoti javafx.scene.layout.GridPane; importuoti javafx.stage.Stage; importuoti javafx.util.StringConverter; viešoji klasė „SpinnerDemo“ pratęsia paraišką {@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 () {@Paisyti viešąjį sveikąjį skaičių išString (String value) {try {return sci.fromString (value); } sugauti (NumberFormatException nfe) {System.out.println ("Blogas sveikasis skaičius:" + reikšmė); grąžinti 0; }} @Paisyti viešosios eilutės toString (sveiko skaičiaus reikšmė) {grąžinti sci.toString (reikšmė); }}; ispinner.getValueFactory (). setConverter (sci2); Spining dspinner = naujas verpėjas (1,5, 3,5, 1,5, 0,5); dspinner.setEditable (true); „StringConverter“ scd = dspinner.getValueFactory (). GetConverter (); „StringConverter“ scd2 = nauja „StringConverter“ () {@Paisyti viešąjį dvigubą „fromString“ (eilutės vertė) {pabandykite {grąžinti scd.fromString (vertė); } pagauti („RuntimeException re“) {System.out.println ("Blogas dvigubas:" + reikšmė); System.out.println ("Priežastis:" + re.getCause ()); grąža 0,0; }} @Orride public String toString (Double value) {grąžinti scd.toString (reikšmė); }}; dspinner.getValueFactory (). setConverter (scd2); „GridPane“ tinklelis = new GridPane (); tinklelis.setHgap (10); tinklelis.setVgap (10); grid.setPadding (nauji įdėklai (10)); grid.add (nauja etiketė („Integer Spinner“), 0, 0); tinklelis.add (ispinner, 1, 0); grid.add (nauja etiketė („Double Spinner“), 0, 1); tinklelis.add (dspinner, 1, 1); Scenos scena = nauja scena (tinklelis, 350, 100); primaryStage.setTitle („SpinnerDemo“); primaryStage.setScene (scena); primaryStage.show (); }}
Sudaryti 7 sąrašą (javac SpinnerDemo.java
) ir paleiskite gautą programą (java SpinnerDemo
). Turėtumėte stebėti klaidų pranešimus, panašius į nurodytus žemiau, kai į suktuko teksto lauką įvedate neteisėtus simbolius:
Netinkamas sveikasis skaičius: a2 Blogas dvigubas: b1.5 Priežastis: java.text.ParseException: Nepašalinamas skaičius: „b1.5“
Klausimas: Man reikia styginių verpimo. Kaip jį gauti?
A: Galite įsigyti virvelių sukimo priemonę per „Spinner“ („ObservableList“ elementai)
konstruktorius. Pvz., Šiame kodo fragmente parodyta, kaip sukurti suktuką savaitės dienos pavadinimui pasirinkti:
Sąrašas weekDays = Arrays.asList („pirmadienis“, „antradienis“, „trečiadienis“, „ketvirtadienis“, „penktadienis“, „šeštadienis“, „sekmadienis“); ObservableList obsWeekDays = FXCollections.observableList (weekDays); Spinner sspinner = naujas verpėjas (obsWeekDays);
Ištraukiau šį kodo fragmentą iš ketvirtosios „SpinnerDemo“
programa (žr. šio straipsnio kodų archyvą, kuriame rasite šaltinio kodą). Paleidę tą programą pamatysite suktuką, parodytą 20 paveiksle.
20 paveikslas. Bandoma į redaktorių įvesti tekstą, kuris tiksliai neatitinka vieno iš savaitės dienų pavadinimų java.lang.UnsupportedOperationException
metamas
Klausimas: Ar galėtumėte pateikti daugiau informacijos apie „JavaFX“ palaikymą verpėjams?
A: Peržiūrėkite „JavaFX 8“ dokumentaciją Suktukas
ir „SpinnerValueFactory“
Norėdami gauti daugiau informacijos apie šį valdiklį ir jo modelį. Be to, galbūt norėsite paleisti „Google“ paiešką, kad sužinotumėte, kaip kiti naudoja šį valdiklį.
Teksto formatavimas
Klausimas: Kaip „JavaFX“ palaiko teksto formatavimą?
A: „JavaFX“ palaiko teksto formatavimą pateikdama javafx.scene.control.TextFormatter
klasė su savo lizdais Keisti
klasė. Be to, abstraktus javafx.scene.control.TextInputControl
klasė (tėvų klasė) Teksto laukas
ir javafx.scene.control.TextArea
) buvo suteiktas a textFormatter
ypatybė, kad bet kuris poklasis automatiškai palaikytų teksto formatavimą.
Klausimas: Kokio tipo teksto formatavimas palaikomas?
A:„TextFormatter“
palaiko dviejų tipų teksto formatavimą: reikšmę ir keitimą. A vertės formatavėjas yra vadinamas, kai paspausite Įveskite
įvedę tekstą. A pakeisti formatą yra reikalingas kiekvienam teksto ištrynimui, papildymui ir pakeitimui, kad būtų galima atlikti fokusuotą teksto įvesties valdiklį. Šie formatai gali būti naudojami atskirai arba kartu.
Klausimas: Kaip nurodomi vertės ir pakeitimo formatai?