Um frame é uma janela com propriedades adicionais que a habilitam a ter uma "vida independente" no sistema de janelas gráficas. Para que um frame seja apresentado pela aplicação, um objeto desse tipo de classe deve ser criado e algumas de suas propriedades básicas -- tais como sua dimensão e o fato de estar visível -- devem ser estabelecidas.
Em AWT, frames estão associados a objetos da classe Frame. Esse exemplo ilustra as operações essenciais para que um frame AWT seja criado e exibido em um ambiente gráfico. O resultado da execução desse código é a criação e exibição de uma janela gráfica sem conteúdo:
Se o tamanho da janela (em pixels, horizontal, vertical) não for definido (método setSize()), então o default (x=0, y=0) é assumido, criando uma janela de dimensões nulas. Mesmo que o tamanho seja definido, a janela quando criada é por padrão invisível -- para exibi-la é preciso invocar o método setVisible().
Frame é uma extensão da classe Window. Esta, por sua vez, é uma concretização de Container, que é uma extensão de Component. Assim, é importante tomar contato com os diversos métodos definidos ao longo dessa hierarquia para ter uma noção mais precisa sobre o que é possível realizar com um objeto Frame. Por exemplo, para tratar eventos relativos a janelas é preciso associar ao frame um WindowListener através do método addWindowListener(), definido na classe Window.
A classe Frame propriamente dita define os métodos que dizem respeito ao que um frame tem de específico que uma janela (objeto da classe Window) não tem -- por exemplo, setTitle() para definir um título para a barra da janela, setMenuBar() para incluir uma barra de menus e setCursor() para determinar o tipo de cursor a ser utilizado, com alternativas especificadas como constantes da classe Cursor, tais como Cursor.HAND_CURSOR e Cursor.TEXT_CURSOR.
O pacote Swing também oferece a sua versão de um frame através da classe JFrame, que é uma extensão da classe Frame. Esse código ilustra a criação de uma janela vazia, como acima, usando JFrame.
© Ivan Luiz Marques Ricarte
DCA/FEEC/UNICAMP