No desenvolvimento de aplicações é natural a necessidade de se criarem interfaces gráficas que permitam a interacção entre o utilizador e a aplicação, em Java, criar aplicações com interface gráficas (GUI1)) é possível através de uma de 4 tecnologias: AWT, Swing, SWT e Java2D.
Java2D, como o nome indica, permite-nos criar elementos em 2D, permite ler imagens, mostrar texto, imprimir, desenhar formas geométricas básicas (quadrados, circunferências, etc.) ou polígonos mais complexos. Com Java2D, embora possamos fazer muitas GUIs interessantes, o código necessário é em quantidade e exigência técnica2) maior que nas restantes tecnologias.
AWT3) é o toolkit4) gráfico que foi adicionado ao Java nas versões iniciais, é um toolkit com forte ligação ao sistema operativo, sendo considerado um toolkit cujos componentes são heavy-weight 5) o seu aspecto é o similar às aplicações do Windows 956), e não é o toolkit que se considerará como primeira escolha nas versões actuais do Java.
SWT7) é um toolkit desenvolvido, inicialmente, pela IBM e que é agora controlado pela Eclipse Foundation. Pretende ser um toolkit com aspecto nativo usando as bibliotecas do sistema operativo8) através de ligações JNI9). Embora uma aplicação feita com SWT seja portável, as bibliotecas SWT são específicas para cada sistema operativo.
SWT foi desenhado com o objectivo de atingir uma maior integração com o sistema operativo onde as aplicações são executadas, um aspecto nativo de modo a ser similar a aplicações do sistema operativo, e uma maior performance10).
SWT sofre também de alguma falta de suporte no que toca a IDEs, não existindo ferramentas de desenvolvimento rápido com a mesma qualidade que existem para AWT ou Swing e por não ser parte do standard da plataforma Java11).
Até à versão 6 updade 10 não era possível misturar Swing com SWT de forma coerente e que permitisse utilizar vantagens das duas tecnologias.
Swing é uma evolução do AWT, pretende ser um toolkit extremamente personalizável, com componentes light-weight12) e que oferece mais que um simples conjunto de elementos gráficos mas uma ferramenta completa para a criação de GUIs. Incluí suporte para drag-and-drop, copy+paste, internacionalização, usabilidade, etc. O seu suporte para look-and-feels13) permite uma personalização do aspecto sem limites, quer através de código quer através de XML.
Swing, no entanto, exige que o programador tenha um bom conhecimento de Java e de POO, isto porque a facilidade e desenvolvimento é acompanhada pela facilidade de se desenvolverem aplicações que fazem mau uso dos recursos, resultando numa aplicação lenta, com maus tempos de resposta ou problemas de consumo excessivo de recursos (CPU e memória). Iremos abordar problemas de desenho em pontos seguintes.
(…)
A framework Swing possui um conjunto de componentes base, que podem ser usados, estendidos e alterados de acordo com as necessidades, esses componentes são:
Componentes simples | |
---|---|
JButton | Botão que pode conter imagens e texto. |
JCheckBox | Caixa de seleccção com dois estados. |
JComboBox | Caixa de combinação que lista um conjunto de valores. Aceita edição. |
JList | Lista de valores em texto ou imagens. |
JMenu | Permite a criação de barras de menu. |
JRadioButton | |
JSlider | |
JSpinner | |
JTextField | Campo de texto. |
JPasswordField | Campo de texto para introdução de passwords. |
Componentes com interactividade complexa | |
JColorChooser | |
JEditorPane | |
JTextPane | |
JFileChooser | |
JTable | |
JTextArea | |
JTree | |
Não editáveis | |
JLabel | |
JProgressBar | |
JSeparator | |
JToolTip | |
Componentes contentores (obrigatórios) | |
JApplet | |
JDialog | |
JFrame | |
Pelo menos um destes componentes tem de estar presente numa aplicação Swing. | |
Componentes contentores (genéricos) | |
JPanel | |
JScrollPane | |
JSplitPane | |
JTabbedPane | |
JToolBar | |
Componentes contentores (especiais) | |
JInternalFrame | |
JLayeredPane | |
JRootPane |
<< Exemplo: Xenon :: Início :: Campo Minado >>