Os componentes do swing têm uma aparência própria, diferente dos componentes equivalentes que estão ligados diretamente a um sistema operacional, como os componentes do Windows, por exemplo. Veja o exemplo da Figura 1:
Perceba que, visualmente, os componentes são diferentes. Isso acontece porque no caso do swing, os componentes visuais fazem parte da máquina virtual (JVM – Java Virtual Machine) e isso o deixa totalmente independente do sistema operacional que está por trás disso tudo.
Como consequência, temos a vantagem de ter um programa feito em Java utilizando componentes swing com, exatamente, a mesma aparência quando executado em diversos sistemas operacionais. A Figura 2 mostra que nos vários sistemas operacionais (Windows, Unix, MacOS etc.) o ambiente encontrado pelo programa Java é o mesmo, ou seja, ele é compilado para ser executado em uma máquina virtual, não importando em que arquitetura computacional essa esteja inserida.
Já a figura a seguir (Figura 3) ilustra as camadas de software e hardware de um sistema computacional, destacando a máquina virtual como intermediária entre um programa feito em Java e o hardware que, efetivamente o executará. Como a figura sugere, fica a cargo da máquina virtual a tradução do programa Java para a plataforma na qual a JVM está instalada. Essa solução gera o que chamamos de portabilidade, que nada mais é do que a capacidade de se implementar e compilar um programa apenas uma vez e poder executá-lo em várias plataformas de hardware e software diferentes.
Contêineres são componentes que têm a capacidade de incluir outros componentes no seu interior. É o mesmo conceito para os contêineres da vida real, aquelas enormes caixas utilizadas para armazenar mercadorias transportadas por navios e caminhões de um lugar para outro. O swing provê três classes que são consideradas contêineres de mais alto nível (conhecidas também como contêineres top-level): JFrame, JDialog e JApplet. Isso quer dizer que:
A Figura 4 representa um JFrame criado por uma aplicação. Esse frame contém uma barra de menus (com as opções padrões) e, no content pane do frame, alguns labels (rótulos).
A Figura 5 mostra a hierarquia de contêineres para a GUI da figura anterior.
Figura 5 – Hierarquia de contêineres utilizada no exemplo
Todo programa que usa componentes do swing tem pelo menos um contêiner top-level. Esse é a raiz da hierarquia de contêiner e esta última, por sua vez, contém todos os componentes do swing que aparecerão dentro do contêiner top-level.
Uma aplicação para desktop cuja GUI utiliza o swing tem pelo menos uma hierarquia de contêineres com um JFrame como sua raiz. Por exemplo, se uma aplicação tem uma janela principal e duas caixas de diálogo, então, a aplicação tem três hierarquias de contêiner. Uma que tem um JFrame como raiz e duas com um JDialog como raiz.
Com exceção dos contêineres top-level, todos os componentes do swing cujo nome começa com “J” são descendentes da classe JComponent. Por exemplo, os componentes JPanel, JScrollPane, JButton e JTable herdam todas as características de JComponent. Já o JFrame e o JDialog não, porque eles são contêineres top-level.
A classe JComponent provê as seguintes características a seus descendentes:
Nesta aula será apresentado o mais, digamos assim, indispensável dos componentes: o rótulo (JLabel). Outros componentes serão apresentados nas próximas aulas. Começaremos pelos componentes mais usados, explicando seus principais métodos e propriedades, e, com o desenvolver das aulas, veremos alguns componentes de uso mais específico e que serão utilizados em estudos posteriores. Serão mostrados exemplos do uso de cada componente, assim como serão cobrados exercícios para todos eles. Para isso, utilizaremos o Netbeans para o desenvolvimento de todos os exercícios do presente curso.
Esse é um componente bastante comum. Podemos dizer até que ele está presente em toda interface gráfica. O rótulo, mais conhecido pelo termo JLabel no NetBeans, é, geralmente, utilizado para criar títulos, como também identificar campos de formulários em uma aplicação, entre outras funções. Veja um exemplo na Figura 6.
Figura 6 – Exemplos de utilização do componente JLabel
Acompanhe os procedimentos a seguir e veja como implementar, de uma maneira fácil, um rótulo em uma aplicação:
Figura 7 – Inserindo um rótulo no JFrame
Vejamos agora algumas propriedades que podem ser utilizadas nesse componente:
Figura 8 – Alterando a propriedade font do componente rótulo
Figura 9 – Caixa de diálogo para alterar o tipo, o estilo e o tamanho da fonte
Figura 10 – Opção para alterar a propriedade foreground do rótulo
Figura 11 – Caixa de diálogo para alterar a cor do rótulo
Obs.: Conforme vimos na propriedade foreground, se você já souber o código da cor que deseja, basta digitar os valores “[0,0,0]” diretamente na caixa de texto e apertar Enter. A cor da fonte será alterada para a cor especificada.
Figura 12 – Alterando o alinhamento horizontal do rótulo
https://moodle.metropoledigital.ufrn.br/metropole/mdweb/desenvolvimento_desktop/aula03.html Acessado em:29.08.2012
https://download.oracle.com/javase/tutorial/uiswing/components/index.html. Acessado em: 05.04.2012.
https://download.oracle.com/javase/tutorial/uiswing/components/label.html. Acessado em 05.04.2012.