Programmēšana

JavaFX uzlabojumi Java SE 8u40

Iepriekšējais 1 2 3 4 Page 3 Nākamais 3. lapa no 4

5. sarakstā tiek izmantots java.util.Pāris klasē, lai ērti uzglabātu vienumu pāri: meklēšanas tekstu un Būla reģistrjutīgo meklēšanas vērtību. Lai pārveidotu dialoglodziņa meklēšanas teksta lauka un reģistrjutīgo meklēšanas izvēles rūtiņas vērtības uz a, ir instalēts rezultātu pārveidotājs Pāris objekts, kas tiek atgriezts no zvanīt () metodi. Šī konversija notiek tikai tad, ja Meklēt noklikšķina uz pogas; tas nenotiek, kad Atcelt ir noklikšķināts.

Vai meklējat vietni search.png?

5. saraksta pamatā ir ārējs search.png attēla fails, kas ir iekļauts šī raksta kodu arhīvā.

Sastādiet 5. sarakstu šādi:

javac SearchDialog.java

Palaidiet iegūto lietojumprogrammu šādi:

java SearchDialog

18. attēlā parādīts iegūtais dialoglodziņš.

18. attēls: Meklēšanas dialoglodziņā pēc noklusējuma nav meklēšanas teksta un meklēšanas nav reģistrjutīgu

Pieņemsim, ka jūs ieejat JavaFX teksta laukā un atzīmējiet izvēles rūtiņu. Pēc noklikšķināšanas Meklēt, standarta izvades straumē jāievēro šāda izeja:

Meklēšanas teksts = JavaFX, reģistrjutīga meklēšana = patiess

J: Vai varat man sniegt vairāk informācijas par JavaFX atbalstu standarta un pielāgotajiem dialoglodziņiem?

A: Pārbaudiet JavaFX dialoglodziņus, lai skatītu papildu standarta un pielāgoto dialoglodziņu piemērus (ieskaitot pielāgotu pieteikšanās dialoglodziņu), kā arī uzzinātu vairāk par dialoga stilu un dialoga īpašnieka un modalitātes iestatīšanu.

Spinera kontrole

J: Kas ir vērpējs?

A: A vērpējs ir vienas rindas teksta lauka vadīkla, kas ļauj lietotājam izvēlēties numuru vai objekta vērtību no sakārtotas šādu vērtību secības. Spiningotāji parasti nodrošina pāris sīku bultiņu pogas, lai pārietu pa secības elementiem. Tastatūra augšupvērstā bultiņa/bultiņa uz leju taustiņi arī pārvietojas pa elementiem. Lietotājam var atļaut arī ierakstīt (likumīgo) vērtību tieši vērpējā. Lai gan kombinētās kastes nodrošina līdzīgu funkcionalitāti, dažreiz priekšroka tiek dota spiningotājiem, jo ​​tiem nav nepieciešams nolaižams saraksts, kas varētu aizsegt svarīgus datus, kā arī tāpēc, ka tie ļauj izmantot tādas funkcijas kā iesaiņošana no maksimālās vērtības līdz minimālajai vērtībai (piem., no lielākā pozitīvā veselā skaitļa līdz 0).

J: Kā tiek īstenots vērpējs?

A: Spinner tiek realizēts kā javafx.scene.control.Spinner kontroles klase. Šī klase balstās uz abstrakto javafx.scene.control.SpinnerValueFactory klase, lai sniegtu vadības modeli (lietotāja izvēlētu noteikta veida vērtību diapazons). Pašlaik vienīgos atbalstītos modeļus nosaka tā ligzdotie DoubleSpinnerValueFactory, IntegerSpinnerValueFactory, un ListSpinnerValueFactory klases.

J: Kā es varu izveidot vērpēju?

A: Jūs izveidojat vērpēju, piezvanot vienam no Vērpējskonstruktori. Piemēram, Spinner (int min, int max, int sākotnējā vērtība) izveido vērpēju, lai atlasītu vienu no vesela skaitļa vērtībām no min cauri maks. Sākotnēji izvēlēto vērtību identificē ar sākotnējā vērtība. Ja šī vērtība nav min/maks diapazons, minvērtība kļūst par sākotnēji izvēlēto vērtību.

Spinner (int min, int max, int sākotnējā vērtība) ir ērtības konstruktors, kas instalē IntegerSpinnerValueFactory klase ar šīm vērtībām kā modeli. Ja vēlaties strādāt tieši ar IntegerSpinnerValueFactory, jūs varat iestatīt šo klasi un nodot tās atsauci uz Spinner (SpinnerValueFactory valueFactory) konstruktors. Varat arī izveidot tukšu vērpēju, izmantojot Vērpējs () konstruktors un piesaukt Vērpējs's void setValueFactory (SpinnerValueFactory vērtība) metode, kā instalēt šo rūpnīcas objektu.

J: Vai jūs varat sniegt vienkāršu veselu skaitļu un dubultprecīzu peldošā komata vērpēju piemēru?

A: Pārbaudiet 6. sarakstu.

6. saraksts. SpinnerDemo.java (1. versija)

importēt javafx.application.Application; importēt javafx.geometry.Insets; importēt javafx.scene.Scene; importēt javafx.scene.control.Label; importēt javafx.scene.control.Spinner; importēt javafx.scene.layout.GridPane; importēt javafx.stage.Stage; publiskā klase SpinnerDemo paplašina lietojumprogrammu {@Override public void start (Stage primaryStage) {Spinner ispinner = new Spinner (1, 10, 2); Spinner dspinner = jauns vērpējs (1,5, 3,5, 1,5, 0,5); GridPane režģis = new GridPane (); grid.setHgap (10); grid.setVgap (10); grid.setPadding (jauni ieliktņi (10)); grid.add (jauna etiķete ("Integer Spinner"), 0, 0); grid.add (ispinner, 1, 0); grid.add (jauna etiķete ("Double Spinner"), 0, 1); režģis.add (dspinner, 1, 1); Sižeta aina = jauna aina (režģis, 350, 100); primaryStage.setTitle ("SpinnerDemo"); primaryStage.setScene (aina); primaryStage.show (); }}

Uzskaita 6 sākt() metodi, izmantojot iepriekš minēto konstruktoru, vispirms izveido veselu skaitli. Pēc tam tas izveido dubultas precizitātes peldošā komata vērpēju, izmantojot Spinner (dubultā min, dubultā maks, dubultā sākotnējā vērtība, dubultā summaToStepBy) konstruktors. Šis konstruktors saņem vienības, kurās palielināt vai samazināt vērpēju, izmantojot vērtību, kas nodota summaToStepBy, kas notiek 0.5.

Turpinot, sākt() izveido un konfigurē režģa rūts konteineru un aizpilda 2 rindu pa 2 kolonnām režģi ar šiem vērpējiem un saistītajām etiķetēm. Pēc tam tas izveido ainu, pamatojoties uz režģi, un konfigurē / parāda skatuvi.

Sastādiet 6. sarakstu šādi:

javac SpinnerDemo.java

Palaidiet iegūto lietojumprogrammu šādi:

java SpinnerDemo

19. attēlā parādīts iegūtais lietotāja interfeiss.

19. attēls: Noklikšķiniet uz katra rotora bultiņām, lai palielinātu / samazinātu vērtību diapazonu

J: Es vēlos padarīt iepriekšējos vērpējus rediģējamus. Kā es varu paveikt šo uzdevumu?

A: Zvaniet Vērpējs's void setEditable (Būla vērtība) metode, piespēle taisnība uz vērtība. Esmu izveidojis otro versiju SpinnerDemo demonstrēt. Avota kodu skatiet šī raksta kodu arhīvā.

J: Kad es iepriekšējos vērpējus padarīju rediģējamus, teksta laukā ierakstiet nelegālas rakstzīmes (piemēram, burtus) un nospiediet taustiņu Enter atslēga, tiek izmests izņēmums. Izņēmums ir java.lang.NumberFormatException par veselu skaitli balstītu vērpēju un java.lang.RuntimeException (iesaiņošana java.text.ParseException) dubultās precizitātes peldošā komata vērpšanai. Kā es varu novērst, ka šis izņēmums tiek izmests?

A: Jūs varat novērst šī izņēmuma rašanos, instalējot abstrakta apakšklases gadījumu javafx.util.StringConverter klase (kur T ir tips, kas tiek konvertēts uz vai no Stīga) kā SpinnerValueFactory pārveidotājs. Šis objekts uztvertu izmestu izņēmumu un rīkotos.

Vērpējs izmanto a javafx.scene.control.TextField objekts kā redaktors lietotāja ievades iegūšanai. Tā kā teksta laukā var uzglabāt jebkuru rakstzīmi, ciparu kontekstā var ievadīt neatbilstošas ​​rakstzīmes, piemēram, burtus. Pēc tam, kad lietotājs nospiež Enter, ievade tiek nodota SpinnerValueFactory pārveidotāji T fromString (virknes virkne) metodi. Vesela vai dubultas precizitātes peldošā komata rūpnīcām T ir vai nu Vesels skaitlis vai Dubultā. Konvertējot no virknes ar nelegālām rakstzīmēm uz numuru, izņēmums tiek izmests fromString (). Iegūstiet atsauci uz pašreizējo pārveidotāju un instalējiet jaunu pārveidotāju, kura fromString () metode izsauc citus pārveidotājus fromString () metode a mēģiniet paziņojums ar atbilstošu noķert bloķēt. 7. saraksts parāda lietojumprogrammu, kas izpilda šo uzdevumu.

7. saraksts. SpinnerDemo.java (3. versija)

importēt javafx.application.Application; importēt javafx.geometry.Insets; importēt javafx.scene.Scene; importēt javafx.scene.control.Label; importēt javafx.scene.control.Spinner; importēt javafx.scene.layout.GridPane; importēt javafx.stage.Stage; importēt javafx.util.StringConverter; publiskā klase SpinnerDemo paplašina lietojumprogrammu {@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 () {@Orride public Integer fromString (String value) {try {return sci.fromString (value); } catch (NumberFormatException nfe) {System.out.println ("Slikts vesels skaitlis:" + vērtība); atgriešanās 0; }} @Orride public String toString (Integer value) {return sci.toString (value); }}; ispinner.getValueFactory (). setConverter (sci2); Spinner dspinner = jauns vērpējs (1,5, 3,5, 1,5, 0,5); dspinner.setEditable (true); StringConverter scd = dspinner.getValueFactory (). GetConverter (); StringConverter scd2 = new StringConverter () {@ Pārvarēt publisko Double fromString (String vērtība) {mēģiniet {return scd.fromString (vērtība); } catch (RuntimeException re) {System.out.println ("Slikta dubultā:" + vērtība); System.out.println ("Iemesls:" + re.getCause ()); atgriešanās 0.0; }} @Orride public String toString (Double value) {return scd.toString (vērtība); }}; dspinner.getValueFactory (). setConverter (scd2); GridPane režģis = new GridPane (); grid.setHgap (10); grid.setVgap (10); grid.setPadding (jauni ieliktņi (10)); grid.add (jauna etiķete ("Integer Spinner"), 0, 0); grid.add (ispinner, 1, 0); grid.add (jauna etiķete ("Double Spinner"), 0, 1); režģis.add (dspinner, 1, 1); Sižeta aina = jauna aina (režģis, 350, 100); primaryStage.setTitle ("SpinnerDemo"); primaryStage.setScene (aina); primaryStage.show (); }}

Sastādīt sarakstu 7 (javac SpinnerDemo.java) un palaidiet iegūto lietojumprogrammu (java SpinnerDemo). Ievērojot nelegālas rakstzīmes vērpēja teksta laukā, jums jāievēro kļūdu ziņojumi, kas līdzīgi zemāk redzamajiem:

Slikts vesels skaitlis: a2 Slikts dubultā: b1.5 Iemesls: java.text.ParseException: Neparādāms skaitlis: "b1.5"

J: Man vajag vērpēju uz auklas bāzes. Kā es varu to iegūt?

A: Izmantojot virkni, varat iegūt virkņu vērpēju Spinner (ObservableList preces) konstruktors. Piemēram, šajā koda fragmentā ir parādīts, kā izveidot vērpēju nedēļas dienas nosaukuma izvēlei:

Sarakstā weekDays = Arrays.asList ("pirmdiena", "otrdiena", "trešdiena", "ceturtdiena", "piektdiena", "sestdiena", "svētdiena"); ObservableList obsWeekDays = FXCollections.observableList (weekDays); Spinner sspinner = jauns vērpējs (obsWeekDays);

Es izvilku šo koda fragmentu no SpinnerDemo lietojumprogramma (avota kodu skatiet šī raksta kodu arhīvā). Palaidot šo lietojumprogrammu, redzēsiet vērpēju, kas parādīts 20. attēlā.

20. attēls. Mēģinājums redaktorā ievadīt tekstu, kas precīzi neatbilst vienam no nedēļas dienu nosaukumiem java.lang.UnsupportedOperationException tiek izmests

J: Vai varat man sniegt vairāk informācijas par JavaFX atbalstu vērpējiem?

A: Pārbaudiet JavaFX 8 dokumentāciju vietnē Vērpējs un SpinnerValueFactory lai iegūtu vairāk informācijas par šo vadību un tās modeli. Varat arī palaist Google meklēšanu, lai uzzinātu, kā citi izmanto šo vadību.

Teksta formatēšana

J: Kā JavaFX atbalsta teksta formatēšanu?

A: JavaFX atbalsta teksta formatēšanu, nodrošinot javafx.scene.control.TextFormatter klase ar tās ligzdām Mainīt klasē. Turklāt abstrakts javafx.scene.control.TextInputControl klase (vecāku klase TextField un javafx.scene.control.TextArea) ir dota a textFormatter rekvizītu, lai jebkura apakšklase automātiski atbalstītu teksta formatēšanu.

J: Kāda veida teksta formatēšana tiek atbalstīta?

A:TextFormatter atbalsta divu veidu teksta formatēšanu: vērtību un izmaiņas. A vērtības formatētājs tiek izsaukts, nospiežot taustiņu Enter taustiņu pēc teksta ievadīšanas. A mainīt formatētāju tiek aicināts uz visām teksta dzēšanas, pievienošanas un teksta aizstāšanas izmaiņām fokusētajai teksta ievades vadībai. Šos formatētājus var izmantot atsevišķi vai kopā.

J: Kā tiek norādīti vērtību un izmaiņu formatētāji?

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