Escolar Documentos
Profissional Documentos
Cultura Documentos
Swing é uma das 5 APIs que formam a JFC (Java Foundation Classes), que
abrangem um grupo das características para construir Interfaces Gráficas com
o Usuários (GUIs) e adição de ricas funcionalidades e interatividade com
aplicações Java. O Swing veio como uma extensão do AWT(Abstract Window
Toolkit) que dependia de componentes específicos de cada plataforma, o que
não acontece com Swing, pois este contém apenas códigos java , o que
permite rodar em qualquer plataforma(Run Everywhere), entretanto estes
componentes são sensivelmente mais lentos que componentes nativos de
qualquer plataforma. Apesar da criação da Swing, o AWT ainda é suportado.
Para um bom rendimento neste curso o aluno deve ter um conhecime nto
básico em Java e ser capaz de criar e compilar um aplicativo básico nesta
linguagem.
A API Swing é poderosa, flexível e imensa, que possui pacotes públicos, cada
um com sua própria finalidade distinta:
V |
V
V
V
V
V
V
V
V
V
V
V
V
ë
O widget é um termo sem tradução que designa componentes de interface
gráfica com o usuário (GUI). Qualquer item de uma interface gráfica é chamada
de widget, por exemplo: janelas, botões, menus ítens de menus, ícones, barras
de rolagem, etc.
| |
|
|
|| |
||| |
|
||
| |
c
c ë
ë
ë
ë
V
!
!
"
#
$
#
%
&'()%*)#+%,
,-
.//0.//
1
"
, 23
V
V
#
"
"
|
ï
ï
ï ï
ï
ï
ï
ï
!2
ï
*3 345
ï6
ï
6 !
Ú|
A l ifi i i i t i t t
f , ti li i l ti P l. A f i t
ifi t t j l .E t f i
fi i t t , t l t f if t
i i P l? A t t t
t li i t.
i
B
t
|
P t i i t li S i l
t i tij l , j i i
i tili t i i i ti
objetos desejados ou componentes, b otões , campos de texto , etc. Por
definição, Containers são componentes que podem conter outros
componentes. Como exemplo de containers temos JWindow , JFrame e
JPanel, porém o JPanel deve ser adicionado a um dos dois anteriores.
c ë
ë
ë
ë
Os componentes são como tijolos nas aplicações Swing, estes podem ser
agrupados em containers para construir uma interface gráfica. Temos uma
infinidade de componentes e a maioria deles pode ser configurada de diversas
formas o que oferece uma grande flexibilidade no desenvolvimento de
interfaces gráficas.
|
! "!|
! # !|
!$%%&%'%()*+)+,)(*!
|
|
Ú|
-. |
/.'
&0%1'21.'$|
$34556455|
-- |
-- |
--|
7|
Ú|
|
|
|
|
|
|
*-*-@
%-*-!
-! |
|
Ú|
-. |
/.'
&0%1'21.'$ |
$34556455 |
@
*-@ |
--6*-@
2'>% |
--6*-@
.2%> |
-- |
7 |
Ú|
. |
Ú|
Ú|
Note que neste caso foi necessário importar o "java.awt" devido ao uso de Layouts. O resultado do
exemplo é:
|!||
| |
|"
5
- Botão que pode conter um texto ou um ícone, suas
funcionalidades são controladas pelo actionlistener, existem muitas
fucionalidades que podem ser atribuídas a um botão, neste curso abordaremos
apenas princípios básicos, assim fica a cargo do alun o pesquisar uma
funcionalidade específica na documentação da Sun ou nos vários sites sobre
Swing na Internet. Uma grande vantagem do swing é que você pode
redimensionar e arrastar a janela sem configurar nada e os componentes são
reorganizados também de acordo com o layout escolhido.
*
-
-
$
89
*
Ú
*
! *
!
.
.
/.'
&0%1'21.'$
@
@
*
A
*
!*
!
--A
0 0
-
0 0
!A
!
*
*
-
*B
-.
@ ?? /
-
--C
Result
:
|||
|
|
j text iel uma ea ara text ue e ser muit til ara
f rmul ri s. Este mponente eralmente usado ombinado om o abel
ue adciona um nome ao campo.
j
similar ao Button, porém esse é usado para marcar 1 ou
mais opções dentre as disponí eis.
--
A6*-@
2'>% ??-
A
-
--
6 *-@
.2%>?? -
-
--
46 *-@
$',% ?? -
4
-
7
Ú
Ú
Resultado:
|#||
|
|$
% |
6
- este é o campo utilizado para senhas, sua utilização é
idêntica ao do JTextField e o texto digitado aparece como "*" (o caractere que
aparece no JPasswordField também pode ser configurado).
c
c
c
4s erenciadores de ayout são responsáveis por organi ar os componentes
em um container, não só ao adicionarmos mas também uando
redimensionamos as janelas. É possível usar diversos tipos de gerenciadores
em uma mesma interface, assim como é possível desligar" o gerenciador de
layout para um dado container e definir manualmente a posição , o tamanho e
outras configurações de cada componente adicionando ao container. ada tipo
de container tem um layout padrão, porém freqüentemente temos que mudar o
layout do container para obter a disposição dos componentes desejados.
Veremos agora as principais características de alguns gerenciadores de layout.
4 gerenciador de layout de ³fluxo´ apenas posiciona os componentes em fila,
um após o outro, cada qual com suas dimensões mínimas. 4 lowLayout imita
o fluxo de textos e pode alinhar os componentes direita, esquerda, ou
centrali a-los dentro do container. 4 uso mais comum deste layout é para
preencher uma linha com maior quantidade possível de compone ntes, por
exemplo em barras de ferramentas ou de status.
V 5
+
V #
V $
V 5
V
V +
$
5
+
7'89()(%)+(
#
(
6
#
:
+
5
+
+
!%#
;<
5
+
:!
"
7'89()(%)+(
#
%
V #
%
7'89()(%)+(
"
5
5
!5
=6>8'*>)'*'#'>7!
05
+
6>8),(>7(
?? -
- @A
0
4
??
5
+
5
!5
B#*(7%!
6
,-
$
B//0=//
05
+
#*(7
5
!5
.'*'#'>7)+'*9>!
05
+
+'*),(>7(
5
!*%CD+%*8%5
E'C)6>8'*>!
05
+
6>8)*$
5
!F'C)+'*9>!
05
+
+'*)*$
"
?
# 8G'
6
0
D
?
>,
8G'
?? -
4
V
$
+
H>
$
??#
- V
!$
5
+
!
$
#
%
&'()%*)#+%,
??% -
#
(
6
#
6
??G
;<
5
+
*A
I
??
+
5
+
??
V
H
1
"
,23
??>
D
J
??
8G'
V ,G
H
+
7
>,
8G'
"
"
"
"
Resultado:
|| |
|%
& |
c
V |
$
8+
|
7'89()(%)+( |
#
(
6
#
|
7'89()(%)+( |
#
%
|
#
%
7'89()(%)+( |
"|
+
8+
/0B |
5
!5
=! |
5
!5
B! |
5
!5
.! |
5
!5
*
D+
E! |
5
!F! |
"|
?|
# 8G'
6
0 |
|
D
|
?|
>,
8G' |
?? -
4
V
|
$ +
H>
$
|
??#
- V
|
!$
8+
! |
$
#
%
&'()%*)#+%, |
??% -
|
#
(
6
#
6
|
??
V
|
H |
1 |
"|
,23 |
??>
D
J |
V ,G
H
+
7
|
|
>,
8G' |
"|
"|
"|
"|
Resultado:
c
Especificam a posição X,Y para adicionar o componente. Não é necessário
alterar seus valores, pois seu valor padrão é a constante RELATIVE e portanto
o layout adicionará após o último componente que foi colocado.
Especificam o tamanho do componente baseado em células. É com essa
propriedade que você indicará que um componente seu ocupará duas células
ou ocupurá tantas quanto forem necessárias para ir até o final da tela.
Lembrem-se é células e não pixels.
Essas propriedades especificam um percentual de crescimento da célula, não
do componente, quando a mesma precisa ser redimensionada. É dito isso,
porque se o componente não pode se redimensionar, pois a propriedade fill do
constraint afirma isso, o componente não vai sofrer as alterações, mas a célula
irá aumentar.
Com este layout é possível informar que uma célula redimensionará 75% e o
outra 25%, portanto, o primeiro componente receberá 3 vezes mais tamanho
do que o segundo.
O valor padrão é 0 e os valores percentuais são dados em casas decimais, por
exemplo: 0.03 é igual a 3%, .00 é igual a 00% e por aí vai.
- weightx: Peso em x. Especifica um peso no redimensionamento. Este peso
será utilizado para um cálculo que o layout faz para determinar quais as células
irão redimensionar horizontalmente, quais não irão e quais aumentarão mais
que as outras.
- weighty: Peso em y. Especifica um peso no redimensionamento. Este peso
será utilizado para um cálculo que o layout faz para determinar quais as células
irão redimensionar verticalmente, quais não irão e quais aumentarão mais que
as outras.
Determina um adicional nas bordas internas do componenete. Essa
propriedade modifica o tamanho mínimo de cada componente. O tamanho
mínimo será o ipad + o valor mínimo do componente.
- ipadx: Valor para ser adicionado horizontalmente.
- ipady: Valor para ser adicionado verticalmente.
c !"
#
$
"
#
$
Agora que você já aprendeu como colocar componentes na tela, você vai saber
como responder as ações do usuário com os componentes. O principal
mecanismo para isso é o padrão Observer, implementado em Swing com os
"event listeners"(ou observadores de eventos). Os componentes emitem
notificações sobre eventos e o event listener recebe essas notificações. Por
exemplo, para executar um código quando o usuário aperta um botão, você
deve definir um listener para o evento "pressionar botão" e ligar o evento a
esse botão.
(
(
$34556455
@
*-@
@
--A
A
--(
)@*
<
--
*
!*!
--
*
!*4!
--
6*-@
$',%
--
$
% (6
*-@
.2%>
--
!/
!
--
% -A5
--
. *
--
6*-@
2'>%
B
7
Ú
<
.
.
Ú
+
< (
Resultado:
4 exemplo acima não está escrito no estilo usual para Swing. á que a nica
fução do listener é chamar um método, ele é freqüentemente escrito como uma
classe interna anónima inner class).
*A
--(
|
(
'
<)/)
<6!*'%L'>$$0'2
(/'M!
Ú
Ú
ß@$BB ß@$B
ß@$Bß@
7ß1A65
.
0
)
.
G 21(2.$%'>1'1'.,$/1.')'22%
B6!
!
.
(
)
! !6
((
-
-(
??J -N
J
Ú
Ú
Este curso abordou apenas alguns tópicos do Java Swing já que qualquer
abordagem profunda de qualquer tópico da linguag em Java se torna muito
extensa.