10 Diferenças entre JavaFX e Swing

Se você é um programador Java experiente, você, sem dúvida, trabalhou com balanço para criar interfaces de usuário. A Oracle não abandonou completamente Swing - não é obsoleto, e aplicações Swing continuar a trabalhar. Mas nenhum trabalho está sendo feito mais para melhorar Swing, e Oracle deixou claro que o JavaFX é o futuro.

Aqui estão dez diferenças básicas entre JavaFX e Swing.

Em JavaFX, todo o mundo é um palco

No balanço, a classe que detém os componentes de interface do usuário é chamado de quadro e é definido pela JFrame classe. Um quadro é essencialmente uma janela vazia para o qual você pode adicionar um painel, que serve como um recipiente para seus elementos de interface do usuário. Um painel é definido pela JPanel classe.

A aplicação Swing é realmente uma classe que estende a JFrame classe. Para exibir os componentes de interface do usuário, você adicionar componentes a um JPanel e depois adicionar o painel para o quadro.

JavaFX usa a metáfora de um teatro para modelar os recipientes de nível superior de um aplicativo. UMA etapa (Definido pela Etapa classe) representa o mais alto nível de contêiner - normalmente, uma janela, mas em alguns sistemas operacionais, o estágio pode representar a superfície da tela inteira. Os controles individuais e outros componentes que compõem a interface do usuário estão contidos em um cena (Definido pela Cena classe). Uma aplicação pode ter mais do que uma cena, mas apenas uma das cenas podem ser exibidos no palco, em qualquer momento dado.

Uma cena contém uma grafo de cena, que é o conceito mais importante em JavaFX. O grafo de cena é uma coleção de todos os elementos que compõem uma interface de usuário - grupos, layouts, controles e formas. Estes objectos são chamados nós e são todos derivados da classe. o classe tem muitas características e recursos úteis que são automaticamente disponibilizados para qualquer objeto que você pode adicionar à sua interface de usuário. Por exemplo, a classe define um setRotate método que permite rodar qualquer nó no grafo de cena.

Em JavaFX, gerenciadores de layout são nós

No balanço, uma disposição está associada com um JPanel. O alto nível JPanel dá o layout básico para o quadro. Se você quiser ninho layouts adicionais dentro do esquema de nível superior, é necessário criar adicional JPanels, definir seus layouts associados e, em seguida, adicioná-los à disposição de nível superior.

Em JavaFX, layouts são subclasses da classe, assim como controles e formas. Layouts conter uma coleção de nós, e qualquer nó contido em um layout pode ser qualquer tipo de nó: um controle, uma forma, ou de outro layout. Este esquema é muito menos complicado do que a associação do balanço de layouts com painéis.

JavaFX tem melhorado o tratamento de eventos

Ambos JavaFX e eventos uso balanço manipulação para responder a eventos de entrada do usuário. No entanto, você vai descobrir que eventos em JavaFX é melhor pensada e mais consistente do que seus equivalentes em Swing. Mas a maior manipulação de eventos razão é melhorada em JavaFX é por causa de sua dependência de propriedades.

JavaFX oferece suporte a propriedades

JavaFX suporta os conceitos de Propriedades e usa propriedades extensivamente em todas as suas classes. Simplificando, a propriedade é uma variável cujo valor pode ser observado. Você pode registrar um ouvinte com qualquer propriedade, o que lhe permite escrever código que é acionado automaticamente sempre que as alterações de propriedade. Além disso, você pode vincular Propriedades para o outro, o que significa que, se valor muda uma propriedade, o outro valor da propriedade muda automaticamente com ele.

Porque quase todas as características dos elementos de interface do usuário são gerenciados por meio de propriedades, JavaFX fornece manipulação de eventos que é inédito no Swing. Por exemplo, em JavaFX, você pode anexar um ouvinte de evento para a cor de uma forma. Se a forma muda de cor, o seu código de ouvinte de evento é executado. Você não pode ter um uso para a capacidade, mas você pode usá-lo se você precisar.

JavaFX é skinnable com CSS

Uma das melhores características do JavaFX é que você pode controlar a formatação com Cascading Style Sheets (CSS). Apenas sobre todos os aspectos da aparência de sua interface de usuário pode ser definido por uma regra de estilo, e você pode facilmente permitir que o usuário escolha qual das várias folhas de estilo disponíveis para aplicar à cena. Assim, você pode mudar toda a aparência de sua aplicação com uma única chamada de método.

JavaFX tem controles mais consistentes

Em geral, você vai descobrir que a hierarquia de controle JavaFX é mais completa do balanço de. Ambos têm todos os controles básicos - botões, caixas de seleção, caixas de combinação e similares. Mas JavaFX tem vários controles interessantes que balanço não tem, como o recolhível TitledPane controle ea Acordeão controle que organiza múltipla TitledPane controla em uma pilha. E o fato de que todos esses controles são skinnable por CSS dá-lhes uma enorme vantagem sobre Swing.

JavaFX tem efeitos especiais

o javafx.scene.effect pacote contém um número de classes que pode facilmente aplicar efeitos especiais para qualquer nó do gráfico de cena. Essas classes permitem aplicar facilmente sombras, reflexos, borrões, e outros efeitos visuais interessantes que podem transformar a aparência de sua interface de usuário.

Animação é mais fácil em JavaFX

Animação é possível em Swing, mas balance não fornece qualquer apoio directo para ele. Para animar um componente Swing, você deve definir os seus próprios temporizadores e construir a sua própria lógica para executar a animação.

Em contraste, JavaFX foi construído com suporte para animações sofisticadas que podem ser aplicadas a qualquer nó no grafo de cena. Você pode usar uma das várias classes de transição built-in para executar animações comuns, tais como fades, rotação ou caminhos de movimento. Ou, você pode usar o KeyFrame e Timeline aulas para configurar facilmente animações personalizadas.

JavaFX suporta dispositivos de toque moderno

Balanço carece de qualquer suporte para dispositivos de toque moderno. Em contraste, JavaFX foi construído com suporte para gestos de toque comuns, tais como o deslocamento, passando, rotação e zoom. Lidar com esses eventos em JavaFX é tão fácil como lidar com qualquer outro tipo de evento: Você simplesmente instalar um ouvinte de evento no evento de toque e, em seguida, escrever código que responde adequadamente.

JavaFX não tem equivalente a JOptionPane

Não seria justo para preencher completamente esta lista de dez diferenças com os pontos que favorecem claramente JavaFX. Aqui está um aborrecimento menor do JavaFX: Ele não tem equivalente incorporado para baloiço JOptionPane classe, que é muito útil para a exibição de mensagens de alerta de curta ou pegar entrada simples do usuário. Em JavaFX, você tem que criar o seu próprio equivalente a esta classe útil.

menu