Professional Documents
Culture Documents
Um quadro é uma janela de nível superior com um título e uma borda. O tamanho do quadro inclui qualquer área designada
para a borda. As dimensões da área da fronteira podem ser obtidas usando o getInsetsmétodo. Uma vez que a área de
fronteira está incluído no tamanho total da estrutura, a fronteira obscurece de forma eficaz uma porção do quadro, restringindo
a área disponível para o processamento e / ou exibindo subcomponentes do rectângulo, que tem uma localização de canto
superior esquerdo (insets.left, insets.top)e tem um tamanho de width - (insets.left +
insets.right)por height - (insets.top + insets.bottom).
Um quadro, implementado como uma instância da JFrameclasse, é uma janela que tem decorações, como uma borda, um
título, e suporta componentes de botão que fecham ou simbolizam a janela. Aplicativos com uma GUI geralmente incluem pelo
menos um quadro. Os applets às vezes usam quadros também.
Para fazer uma janela que depende de outra janela - desaparecendo quando a outra janela é iconificada, por exemplo - use um
em dialogvez de frame.. Para criar uma janela que apareça em outra janela, use um quadro interno .
Aqui está uma imagem da janela extremamente simples criada pelo FrameDemoaplicativo de demonstração. Você pode
encontrar o código fonte em FrameDemo.java. Você pode executar o FrameDemo (baixar o JDK 7 ou posterior ).
// 1. Crie o quadro.
JFrame frame = new JFrame ("FrameDemo");
// 4. Dimensione o quadro.
frame.pack ();
// 5. Mostre.
frame.setVisible (true);
1. A primeira linha de código cria um quadro usando um construtor que permite definir o título do quadro. O
outro JFrameconstrutor usado com frequência é o construtor sem argumentos.
2. Em seguida, o código especifica o que acontece quando o usuário fecha o quadro. A EXIT_ON_CLOSEoperação
sai do programa quando o usuário fecha o quadro. Esse comportamento é apropriado para este programa porque o
programa tem apenas um quadro e fechar o quadro torna o programa inútil.
3. O próximo bit de código adiciona um rótulo em branco ao painel de conteúdo do quadro. Se você ainda não
conhece os painéis de conteúdo e como adicionar componentes a eles, leia Como adicionar componentes ao
painel de conteúdo .
Para quadros que possuem menus, você normalmente adiciona a barra de menu ao quadro aqui usando
o setJMenuBarmétodo. Veja Como usar os menus para detalhes.
4. O packmétodo dimensiona o quadro de modo que todo o seu conteúdo esteja em ou acima de seus tamanhos
preferidos. Uma alternativa packé estabelecer um tamanho de quadro explicitamente
chamando setSizeou setBounds(que também define o local do quadro). Em geral, o uso packé preferível à
chamada setSize, pois packdeixa o gerente de layout de quadros responsável pelo tamanho do quadro, e os
gerenciadores de layout são bons em ajustar as dependências da plataforma e outros fatores que afetam o
tamanho do componente.
Este exemplo não define o local do quadro, mas é fácil fazê-lo usando
o método setLocationRelativeToou setLocation. Por exemplo, o código a seguir centraliza um quadro
na tela:
frame.setLocationRelativeTo (null);
5. Chamar setVisible(true)faz o quadro aparecer na tela. Às vezes, você pode ver o showmétodo usado. Os
dois usos são equivalentes, mas usamos setVisible(true)para consistência.
Além de especificar quem fornece as decorações das janelas, você também pode especificar qual ícone é usado para
representar a janela. Exatamente como esse ícone é usado depende do sistema de janelas ou da aparência que fornece as
decorações da janela. Se o sistema de janelas suportar minimização, o ícone será usado para representar a janela
minimizada. A maioria dos sistemas de janelas ou aparência também mostra o ícone nas decorações da janela. Um tamanho
de ícone típico é 16x16 pixels, mas alguns sistemas de janela usam outros tamanhos.
Os instantâneos a seguir mostram três quadros idênticos, exceto por suas decorações de janela. Como você pode ver pela
aparência do botão em cada quadro, todos os três usam a aparência e comportamento do Java. O primeiro usa decorações
fornecidas pelo sistema de janelas, que por acaso são o Microsoft Windows, mas poderiam facilmente ser qualquer outro
sistema executando a plataforma Java. O segundo e o terceiro usam decorações de janelas fornecidas pela aparência e
comportamento do Java. O terceiro quadro usa as decorações da janela de aparência e comportamento do Java, mas possui
um ícone personalizado.
Aqui está um exemplo de criação de um quadro com um ícone personalizado e com decorações de janelas fornecidas pela
aparência:
// Cria o quadro.
JFrame frame = new JFrame ("Uma janela");
Como o trecho de código precedente implica, você deve invocar o setDefaultLookAndFeelDecoratedmétodo antes
de criar o quadro cujas decorações você deseja afetar. O valor definido com setDefaultLookAndFeelDecoratedé usado
para todos os JFrames criados posteriormente . Você pode voltar a usar as decorações do sistema de janelas
invocando JFrame.setDefaultLookAndFeelDecorated(false). Alguns olhares e sentimentos podem não suportar
decorações de janelas; Neste caso, as decorações do sistema de janela são usadas.
O código-fonte completo do aplicativo que cria os quadros mostrados acima está em FrameDemo2.java. Além de mostrar
como escolher decorações de janelas, o FrameDemo2 também mostra como desabilitar todas as decorações de janelas e dá
um exemplo de janelas de posicionamento. Inclui dois métodos que criam os Imageobjetos usados como ícones - um é
carregado de um arquivo e o outro é pintado do zero.
Tente isto ::
1. Clique no botão Iniciar para executar a demonstração de estruturas usando o Java ™ Web Start (faça
o download do JDK 7 ou posterior ). Como alternativa, para compilar e executar o exemplo você mesmo,
Por padrão, quando o usuário fecha um quadro na tela, o quadro fica oculto. Embora invisível, o quadro ainda existe e o
programa pode torná-lo visível novamente. Se você quer um comportamento diferente, então você precisa registrar um listener
de janela que lida com eventos de fechamento de janela, ou você precisa especificar o comportamento de fechamento padrão
usando o setDefaultCloseOperationmétodo. Você pode até fazer as duas coisas.
O argumento que setDefaultCloseOperationdeve ser um dos seguintes valores, os primeiros três dos quais são
definidos na WindowConstantsinterface de (implementado por JFrame, JInternalPane, e JDialog):
DO_NOTHING_ON_CLOSE
Não faça nada quando o usuário solicitar que a janela seja fechada. Em vez disso, o programa provavelmente deve
usar um listener de janela que execute alguma outra ação em seu windowClosingmétodo.
HIDE_ON_CLOSE(o padrão para JDialoge JFrame)
Esconda a janela quando o usuário a fechar. Isso remove a janela da tela, mas a deixa exibível.
DISPOSE_ON_CLOSE(o padrão para JInternalFrame)
Oculte e descarte a janela quando o usuário a fechar. Isso remove a janela da tela e libera todos os recursos
usados por ela.
EXIT_ON_CLOSE(definido na JFrameclasse)
Saia do aplicativo usando System.exit(0). Isso é recomendado apenas para aplicativos. Se usado dentro de
um applet, um SecurityExceptionpode ser lançado.
Nota:
DISPOSE_ON_CLOSEpode ter resultados semelhantes a EXIT_ON_CLOSEse apenas uma janela estiver na tela. Mais
precisamente, quando a última janela exibível dentro da máquina virtual Java (VM) é descartada, a VM pode ser
encerrada. Veja AWT Threading Issues para detalhes.
A operação de fechamento padrão é executada depois que qualquer ouvinte de janela manipula o evento de fechamento de
janela. Portanto, por exemplo, suponha que você especifique que a operação de fechamento padrão é descartar um
quadro. Você também implementa um listener de janela que testa se o quadro é o último visível e, em caso afirmativo, salva
alguns dados e sai do aplicativo. Sob essas condições, quando o usuário fecha um quadro, o listener de janela será chamado
primeiro. Se não sair do aplicativo, a operação de fechamento padrão - descarte do quadro - será executada.
Para obter mais informações sobre como manipular eventos de fechamento de janela, consulte Como escrever ouvintes de
janela . Além de manipular eventos de fechamento de janela, os ouvintes de janela também podem reagir a outras mudanças
de estado da janela, como a iconificação e a ativação.
A API do frame
As tabelas a seguir listam os JFrameconstrutores e métodos comumente usados . Outros métodos que você pode querer
chamar são definidos pelos java.awt.Frame, java.awt.Windowejava.awt.Componentaulas, a partir do
qual JFramedesce.
Como cada JFrameobjeto tem um painel raiz, os quadros têm suporte para interpor comportamento de entrada e pintura na
frente dos filhos do quadro, colocando os filhos em "camadas" diferentes e para as barras de menus do Swing. Esses tópicos
são apresentados em Usando contêineres de nível superior e explicados em detalhes em Como usar painéis raiz .
DO_NOTHING_ON_CLOSE
HIDE_ON_CLOSE
void setDefaultCloseOperation (int) DISPOSE_ON_CLOSE
int getDefaultCloseOperation () EXIT_ON_CLOSE