Innholdsfortegnelse:
- I JavaFX er hele verden en scene
- I JavaFX er layoutledere noder
- JavaFX har forbedret hendelseshåndtering
- JavaFX støtter egenskaper
- JavaFX er skinnbar med CSS
- JavaFX har mer konsistente kontroller
- JavaFX har spesialeffekter
- Animasjon er enklere i JavaFX
- JavaFX støtter moderne berøringsenheter
- JavaFX har ikke tilsvarende JOptionPane
Video: How to link one JFrame to another JFrame in Java Swing 2025
Hvis du er en erfaren Java-programmerer, har du utvilsomt jobbet med Swing for å skape brukergrensesnitt. Oracle har ikke fullstendig forlatt Swing - det er ikke utdatert, og Swing-applikasjoner fortsetter å fungere. Men det gjøres ikke noe arbeid for å forbedre Swing, og Oracle har gjort det klart at JavaFX er fremtiden.
Her er ti grunnleggende forskjeller mellom JavaFX og Swing.
I JavaFX er hele verden en scene
I Swing er klassen som inneholder brukergrensesnittkomponentene en ramme og er definert av JFrame-klassen. En ramme er egentlig et tomt vindu som du kan legge til et panel, som fungerer som en beholder for brukergrensesnittelementene dine. Et panel er definert av JPanel-klassen.
En Swing-applikasjon er faktisk en klasse som utvider JFrame-klassen. For å vise brukergrensesnittkomponenter legger du til komponenter til en JPanel og legger deretter panelet til rammen.
JavaFX bruker metaforen til et teater for å modellere toppnivåbeholdere av et program. Et stadium (definert av sceneklassen) representerer høyeste nivåbeholderen - vanligvis et vindu, men på enkelte operativsystemer kan scenen representere hele displayflaten. De enkelte kontrollene og andre komponenter som utgjør brukergrensesnittet, finnes i en scene (definert av sceneklassen). En applikasjon kan ha mer enn en scene, men bare ett av scenene kan vises på scenen til enhver tid.
En scene inneholder en scenediagram, som er det viktigste konseptet i JavaFX. Scenediagrammet er en samling av alle elementene som utgjør et brukergrensesnitt - grupper, layouter, kontroller og former. Disse objektene kalles noder og er alle avledet fra Node-klassen. Node-klassen har mange nyttige funksjoner og funksjoner som automatisk gjøres tilgjengelige for ethvert objekt du kan legge til i brukergrensesnittet. For eksempel definerer Node-klassen en setRotate-metode som lar deg rotere noen noder i scenediagrammet.
I JavaFX er layoutledere noder
I Swing er en layout tilknyttet en JPanel. Toppnivå JPanel gir grunnleggende layout for rammen. Hvis du vil legge inn flere oppsett i toppnivålayouten, må du opprette flere JPaneler, angi de tilhørende layoutene, og deretter legge dem til layoutet på høyere nivå.
I JavaFX er layouter underklasser av Node-klassen, akkurat som kontroller og former. Layouts inneholder en samling av noder, og noen noder som finnes i en layout kan være noen form for node: en kontroll, en form eller et annet layout.Denne ordningen er mye mindre tung enn Swings tilknytning av layouter med paneler.
JavaFX har forbedret hendelseshåndtering
Både JavaFX og Swing bruker hendelseshåndtering for å svare på brukerinngangshendelser. Du vil imidlertid oppdage at hendelser i JavaFX er bedre gjennomtenkt og mer konsistent enn deres ekvivalenter i Swing. Men den største årsaken til hendelseshåndtering er forbedret i JavaFX, fordi den er avhengig av egenskaper.
JavaFX støtter egenskaper
JavaFX støtter konseptene egenskaper og bruker egenskaper omfattende i sine klasser. Enkelt sagt, en egenskap er en variabel hvis verdi kan observeres. Du kan registrere en lytter med en hvilken som helst eiendom, slik at du kan skrive kode som utløses automatisk når eiendommen endres. I tillegg kan du binde egenskaper til hverandre, noe som betyr at hvis en eiendomsverdi endres, endres den andre eiendomsverdien automatisk med den.
Fordi nesten alle egenskaper av brukergrensesnittelementer styres gjennom egenskaper, gir JavaFX hendelseshåndtering som ikke er kjent i Swing. For eksempel, i JavaFX kan du legge ved en hendelselytter til fargen på en form. Hvis formen endrer farge, blir hendelseslytterkoden din utført. Du kan ikke ha bruk for evnen, men du kan bruke den hvis du trenger det.
JavaFX er skinnbar med CSS
En av de beste funksjonene i JavaFX er at du kan styre formatering med Cascading Style Sheets (CSS). Omtrent alle aspekter ved utseendet på brukergrensesnittet kan settes av en stilregel, og du kan enkelt tillate brukeren å velge hvilken av flere tilgjengelige stilark som skal brukes til scenen. Dermed kan du endre hele utseendet på søknaden din med en enkelt metodeanrop.
JavaFX har mer konsistente kontroller
Generelt finner du at JavaFX-kontrollhierarkiet er mer komplett enn Swings. Begge har alle de grunnleggende kontrollene - knapper, boksene, kombinationsbokser og lignende. Men JavaFX har flere interessante kontroller som Swing ikke har, for eksempel den sammenleggbare TitledPane-kontrollen og Accordion-kontrollen som arrangerer flere TitledPane-kontroller i en stabel. Og det faktum at alle disse kontrollene er skinnable av CSS gir dem en stor fordel i forhold til Swing.
JavaFX har spesialeffekter
Javafx. scene. effektpakke inneholder en rekke klasser som enkelt kan bruke spesielle effekter til en hvilken som helst node i scenediagrammet. Disse klassene lar deg enkelt bruke skygger, refleksjoner, uskarphet og andre interessante visuelle effekter som kan forandre utseendet til brukergrensesnittet.
Animasjon er enklere i JavaFX
Animasjon er mulig i Swing, men Swing gir ikke direkte støtte til det. For å animere en Swing-komponent må du sette opp dine egne timere og bygge din egen logikk for å utføre animasjonen.
I motsetning til dette har JavaFX innebygd støtte for sofistikerte animasjoner som kan brukes på noen node i scenediagrammet. Du kan bruke en av flere innebygde overgangsklasser til å utføre vanlige animasjoner som fades, rotasjoner eller bevegelsesbaner.Du kan også bruke KeyFrame og Timeline-klassene til å enkelt konfigurere egendefinerte animasjoner.
JavaFX støtter moderne berøringsenheter
Swing mangler støtte for moderne berøringsenheter. I motsetning til dette har JavaFX innebygd støtte for vanlige berøringsbevegelser som å rulle, sveipe, rotere og zoome. Å håndtere disse hendelsene i JavaFX er like enkelt som å håndtere andre typer arrangement: Du installerer bare en hendelseslytter på berøringshendelsen og skriver deretter kode som svarer på riktig måte.
JavaFX har ikke tilsvarende JOptionPane
Det ville ikke være rettferdig å fullstendig fylle denne listen med ti forskjeller med punkter som klart favoriserer JavaFX. Her er en liten irritasjon av JavaFX: Den har ingen innebygd ekvivalent med Swing's JOptionpane-klassen, noe som er veldig nyttig for visning av kortvarslingsmeldinger eller enkel innføring fra brukeren. I JavaFX må du lage din egen ekvivalent til denne nyttige klassen.
