Índice:
- No JavaFX, todo o mundo é um palco
- No JavaFX, os gerentes de layout são nós
- JavaFX melhorou o tratamento de eventos
- JavaFX suporta propriedades
- JavaFX é compatível com CSS
- JavaFX tem controles mais consistentes
- JavaFX tem efeitos especiais
- A animação é mais fácil no JavaFX
- JavaFX suporta dispositivos de toque modernos
- JavaFX não tem equivalente a JOptionPane
Vídeo: AWT vs Swing vs JavaFX 2024
Se você é um programador Java experiente, você, sem dúvida, trabalhou com o Swing para criar interfaces de usuário. A Oracle não abandonou completamente o Swing - não está obsoleto e as aplicações Swing continuam a funcionar. Mas nenhum trabalho está sendo feito mais para melhorar Swing, e a Oracle deixou claro que o JavaFX é o futuro.
Aqui estão dez diferenças básicas entre JavaFX e Swing.
No JavaFX, todo o mundo é um palco
No Swing, a classe que contém os componentes da sua interface de usuário é chamada de frame e é definida pela classe JFrame. Um quadro é essencialmente uma janela vazia à qual você pode adicionar um painel , , que serve como um contêiner para seus elementos da interface do usuário. Um painel é definido pela classe JPanel.
Um aplicativo Swing é na verdade uma classe que estende a classe JFrame. Para exibir os componentes da interface do usuário, você adiciona componentes a um JPanel e depois adiciona o painel ao quadro.
JavaFX usa a metáfora de um teatro para modelar os recipientes de nível superior de uma aplicação. Um estágio (definido pela classe Stage) representa o recipiente de nível mais alto - normalmente, uma janela, mas em alguns sistemas operacionais, o estágio pode representar toda a superfície de exibição. Os controles individuais e outros componentes que compõem a interface do usuário estão contidos em uma cena (definida pela classe Scene). Um aplicativo pode ter mais de uma cena, mas apenas uma das cenas pode ser exibida no palco em qualquer momento.
Uma cena contém um gráfico de cena, , que é o conceito mais importante no JavaFX. O gráfico de cena é uma coleção de todos os elementos que compõem uma interface de usuário - grupos, layouts, controles e formas. Esses objetos são chamados nós e são todos derivados da classe Node. A classe Node possui muitos recursos e recursos úteis que são automaticamente disponibilizados para qualquer objeto que você possa adicionar à sua interface de usuário. Por exemplo, a classe Node define um método setRotate que permite rotear qualquer nó no gráfico da cena.
No JavaFX, os gerentes de layout são nós
No Swing, um layout está associado a um JPanel. O JPanel de nível superior fornece o layout básico para o quadro. Se você deseja aninhar layouts adicionais dentro do layout de nível superior, você deve criar JPanels adicionais, definir os layouts associados e, em seguida, adicioná-los ao layout de nível superior.
Em JavaFX, os layouts são subclasses da classe Node, assim como controles e formas. Layouts contêm uma coleção de nós, e qualquer nó contido em um layout pode ser qualquer tipo de nó: um controle, uma forma ou outro layout.Este esquema é muito menos complicado que a associação de layouts e painéis da Swing.
JavaFX melhorou o tratamento de eventos
Tanto o uso de eventos do JavaFX como o Swing para responder aos eventos de entrada do usuário. No entanto, você achará que os eventos no JavaFX são mais bem pensados e mais consistentes do que seus equivalentes no Swing. Mas o maior motivo de tratamento de eventos é melhorado no JavaFX é por sua dependência de propriedades.
JavaFX suporta propriedades
O JavaFX suporta os conceitos de propriedades e usa propriedades extensivamente ao longo de suas classes. Simplificando, uma propriedade é uma variável cujo valor pode ser observado. Você pode registrar um ouvinte com qualquer propriedade, permitindo que você escreva o código que é acionado automaticamente sempre que a propriedade muda. Além disso, você pode vincular propriedades entre si, o que significa que se um valor de propriedade muda, o outro valor da propriedade muda automaticamente com ele.
Como quase todas as características dos elementos da interface do usuário são gerenciadas através de propriedades, o JavaFX fornece o gerenciamento de eventos que é inédito no Swing. Por exemplo, no JavaFX, você pode anexar um ouvinte de eventos à cor de uma forma. Se a forma muda de cor, seu código de ouvinte de evento é executado. Você pode não ter um uso para a capacidade, mas você pode usá-lo se precisar.
JavaFX é compatível com CSS
Uma das melhores características do JavaFX é que você pode controlar a formatação com folhas de estilo em cascata (CSS). Apenas sobre todos os aspectos da aparência de sua interface de usuário pode ser configurado por uma regra de estilo, e você pode facilmente permitir que o usuário selecione qual das várias folhas de estilo disponíveis para se aplicarem à cena. Assim, você pode alterar toda a aparência do seu aplicativo com uma única chamada de método.
JavaFX tem controles mais consistentes
Em geral, você verá que a hierarquia de controle JavaFX é mais completa que a de Swing. Ambos têm todos os controles básicos - botões, caixas de verificação, caixas combinadas e similares. Mas o JavaFX possui vários controles interessantes que o Swing não possui, como o controle TitledPane dobrável e o controle Accordion que organiza múltiplos controles TitledPane em uma pilha. E o fato de que todos esses controles são abrangentes pelo CSS dá-lhes uma grande vantagem em relação ao Swing.
JavaFX tem efeitos especiais
O javafx. cena. O pacote de efeitos contém uma série de classes que podem facilmente aplicar efeitos especiais a qualquer nó no gráfico de cena. Essas classes permitem que você aplique facilmente sombras, reflexões, borrões e outros efeitos visuais interessantes que podem transformar a aparência de sua interface de usuário.
A animação é mais fácil no JavaFX
A animação é possível no Swing, mas o Swing não fornece suporte direto para isso. Para animar um componente Swing, você deve configurar seus próprios temporizadores e criar sua própria lógica para executar a animação.
Em contraste, o JavaFX possui suporte incorporado para animações sofisticadas que podem ser aplicadas a qualquer nó no gráfico de cena. Você pode usar uma das várias classes de transição incorporadas para executar animações comuns, como fades, rotações ou caminhos de movimento.Ou, você pode usar as classes KeyFrame e Timeline para configurar facilmente animações personalizadas.
JavaFX suporta dispositivos de toque modernos
O Swing não possui nenhum suporte para dispositivos de toque modernos. Em contraste, o JavaFX possui suporte incorporado para gestos de toque comuns, como rolagem, deslocamento, rotação e zoom. Manipular esses eventos no JavaFX é tão fácil como lidar com qualquer outro tipo de evento: Você simplesmente instala um ouvinte de eventos no evento de toque e depois escreve o código que responde apropriadamente.
JavaFX não tem equivalente a JOptionPane
Não seria justo preencher completamente esta lista de dez diferenças com pontos que claramente favorecem JavaFX. Aqui está um pequeno aborrecimento do JavaFX: Ele não possui equivalente incorporado à classe JOptionpane do Swing, que é muito útil para exibir mensagens de alerta curtas ou obter entrada simples do usuário. No JavaFX, você deve criar seu próprio equivalente a esta classe útil.