DADP_-_Nocoes_de_Swing.pdf

7
© 2009 Antonio Passos | http://www.antoniopassos.com.br/ead |Todos os direitos reservados 1 Desenvolvimento de aplicativos desktop em Java Utilizando padrões Noções de Swing Nesta nota de aula, você vai aprender sobre os componentes Swing comumente encontrados em aplicativos dekstop, a construir barras de menus e a criar aplicativos MDI (interface de múltiplos documentos). Ao concluí-la, esperamos que você saiba como criar objetos dos componentes abaixo e conheça seus principais métodos: JFrame; JLabel; JTextField; JTextArea; JButton; Esperamos também que você saiba como criar as janelas principal e internas (JInternalFrame) de aplicativos MDI, bem criar menus (JMenu) e itens de menus (JMenusItens) para montar barras de menus (JMenuBar). Observação : Nesta nota de aula não são apresentados todos os construtores e métodos dos componentes. Conteúdo Componente JFrame Componente JLabel Componente JTextField Componente JTextArea Componente JButton Como criar barra de menus o Como tratar eventos gerados por itens de menus Como implementar aplicativos MDI Componente JFrame JFrame serve de base para qualquer aplicação gráfica. No caso de aplicativos MDI, a janela principal herda de JFrame, enquanto as demais janelas herdam de JInternalFrame. Exemplo:

description

DADP_-_Nocoes_de_Swing.pdf

Transcript of DADP_-_Nocoes_de_Swing.pdf

  • 2009 Antonio Passos | http://www.antoniopassos.com.br/ead |Todos os direitos reservados

    1 Desenvolvimento de aplicativos desktop em Java Utilizando padres

    Noes de Swing

    Nesta nota de aula, voc vai aprender sobre os componentes Swing comumente encontrados em aplicativos

    dekstop, a construir barras de menus e a criar aplicativos MDI (interface de mltiplos documentos).

    Ao conclu-la, esperamos que voc saiba como criar objetos dos componentes abaixo e conhea seus

    principais mtodos:

    JFrame;

    JLabel;

    JTextField;

    JTextArea;

    JButton;

    Esperamos tambm que voc saiba como criar as janelas principal e internas (JInternalFrame) de aplicativos

    MDI, bem criar menus (JMenu) e itens de menus (JMenusItens) para montar barras de menus (JMenuBar).

    Observao: Nesta nota de aula no so apresentados todos os construtores e mtodos dos componentes.

    Contedo

    Componente JFrame

    Componente JLabel

    Componente JTextField

    Componente JTextArea

    Componente JButton

    Como criar barra de menus

    o Como tratar eventos gerados por itens de menus

    Como implementar aplicativos MDI

    Componente JFrame

    JFrame serve de base para qualquer aplicao grfica. No caso de aplicativos MDI, a janela principal herda de

    JFrame, enquanto as demais janelas herdam de JInternalFrame.

    Exemplo:

  • 2009 Antonio Passos | http://www.antoniopassos.com.br/ead |Todos os direitos reservados

    2 Desenvolvimento de aplicativos desktop em Java Utilizando padres

    Mtodos (herdados ou no):

    void setVisible(boolean b)

    o Mostra ou oculta o componente dependendo se b verdadeiro ou falso.

    void setLocation(int x, int y)

    o Move o componente para uma nova posio. As coordenadas x e y usam as coordenadas do

    continer se o componente no for um componente de nvel mais alto, ou as coordenadas da

    tela se o componente for de nvel mais alto.

    Dimension getSize()

    o Obtm o tamanho atual do componente.

    void setTitle(String ttulo)

    o Especifica o texto na barra de ttulo do componente igual a ttulo.

    Dimension getScreenSize()

    o Obtm o tamanho da tela do usurio.

    Componente JLabel

    Cria um rtulo simples com ou sem um cone.

    Construtor(es)

    JLabel (String texto)

    o Onde texto corresponde ao rtulo a ser exibido na face do componente.

    JLabel (Icon cone)

    o Onde cone corresponde a figura a ser exibida na face do componente.

    JLabel (String texto, Icon cone)

    Jlabel (String texto, Icon cone, int alinhamento)

    o Onde alinhamento pode ser uma das constantes de alinhamento Swing.Constants.LEFT,

    Swing.Constants.CENTER ou Swing.Constants.RIGTH.

    Mtodo(s)

    void setText(String texto)

    o Altera o texto do component.

    void setIcon(Icon cone)

  • 2009 Antonio Passos | http://www.antoniopassos.com.br/ead |Todos os direitos reservados

    3 Desenvolvimento de aplicativos desktop em Java Utilizando padres

    o Altera o cone do component.

    Componente JTextField

    Cria um campo de entrada de dados simples.

    Construtor(es)

    JTextField(int colunas)

    o Onde colunas corresponde ao nmero de colunas do campo.

    JTextField(String texto, int colunas)

    o Onde texto corresponde ao texto inicial exibido pelo campo e colunas, largura do campo.

    Mtodo(s)

    void setText(String texto)

    o Altera o texto exibido pelo componente.

    String getText()

    o Retorna o texto contido no componente.

    void setEditable(boolean valor)

    o Determina se o usurio pode editar o contedo do campo.

    Componente JTextArea

    Cria uma rea de texto.

    Construtor(es)

    JTextArea(int linhas, in colunas)

    o Onde linhas especifica o nmero de linhas que o componente apresentar e colunas, a

    dimenso da rea de texto em nmero de caracteres.

    JTextArea(String texto, int linhas, int colunas)

    o Onde texto especifica o texto inicial do componente.

    Mtodo(s)

    void setColumns(int colunas)

    o Configura o nmero preferencial de colunas do componente

    void setRows(int linhas)

    o Configura o nmero preferencial de linhas do componente

    void append(String novoTexto)

    o Acrescenta o texto fornecido ao texto j existente no componente

    void setLineWrap(boolean quebrar)

    o Ativa ou no a quebra automtica de linha.

  • 2009 Antonio Passos | http://www.antoniopassos.com.br/ead |Todos os direitos reservados

    4 Desenvolvimento de aplicativos desktop em Java Utilizando padres

    void setWrapStyleWord(boolean palavra)

    o Se palavra for true, as linhas extensas sero quebradas ao final das palavras. Se for false,

    sero quebradas sem levar em conta o final das palavras.

    void setTab Size(int c)

    o Especifica paradas de tabulao a cada c colunas.

    Componente JButton

    Cria um boto simples com ou sem cone

    Construtor(es)

    JButton (String rtulo)

    o Onde rtulo corresponde ao texto a ser exibido na face do boto.

    JButton (Icon cone)

    o Onde cone corresponde a figura a ser exibida na face do boto.

    JButton (String rtulo, Icon cone)

    Como criar barra de menus

    Uma barra de menus constituda por menus, que por sua vez so constitudos por submenus ou itens de

    menu.

    Os passos para criar uma barra de menu so os seguintes:

    Passo 01

    Criar a barra de menus (objeto da classe JMenuBar)

    Ex.:

    JMenuBar barraDeMenu = new JMenuBar();

    Passo 02

    Criar menus (objetos da classe JMenu).

    Ex.:

    JMenu menuArquivo = new JMenu("Arquivo");

    JMenu menuAjuda = new JMenu("Ajuda");

    Passo 03

    Criar itens de menu (JMenuItem), ou submenus, e adicionar aos menus.

    // Cria o item de menu miSair

    JMenuItem miSair = new JMenuItem (Sair);

    // Adiciona o item de menu miSair opo de menu menuArquivo

  • 2009 Antonio Passos | http://www.antoniopassos.com.br/ead |Todos os direitos reservados

    5 Desenvolvimento de aplicativos desktop em Java Utilizando padres

    menuArquivo.add(miSair);

    // Cria o item de menu miSobre

    JMenuItem miSobre = new JMenuItem("Sobre");

    // Adiciona o item de menu miSobre opo de menu menuAjuda

    menuAjuda.add(miSobre);

    Passo 04

    Adicionar os menus barra de menus.

    barraDeMenu.addMenu(menuArquivo);

    barraDeMenu.addMenu(menuAjuda);

    Passo 05

    Adicionar a barra de menus (objeto JMenuBar) ao JFrame (janela).

    uiPrincipal.setJMenuBar(barraDeMenu);

    Observao:

    Para adicionar um separador, invoque sobre o objeto JMenu o mtodo addSeparator().

    menuAjuda.addSeparator();

    Como tratar eventos gerados por itens de menu

    Os eventos gerados por itens de menu so eventos de ao. Como tal, devem ser tratados por classe que

    implementa a interface ActionListener.

    No mtodo actionPerformed de ActionListener, pode-se usar o operador instanceof para se verificar se o

    evento foi gerado por um item de menu.

    public void actionPerformed (ActionEvent e){

    if (e.getSource() instanceof JmenuItem) {

    ...

    }

    }

    Para se obter o item de menu selecionado, usa-se o mtodo getActionCommand.

    public void actionPerformed (ActionEvent e){

    String item = e.getActionCommand();

    if (item.equals(Sair) {

    System.exit (0);

    }

    }

    Como implementar aplicativos MDI

  • 2009 Antonio Passos | http://www.antoniopassos.com.br/ead |Todos os direitos reservados

    6 Desenvolvimento de aplicativos desktop em Java Utilizando padres

    Aplicativo MDI Multiple Document Interface (interface de mltiplos documentos) aquele cujas janelas

    so aninhadas, ou abertas, dentro de uma janela principal.

    Abaixo, passo a passo para criar um MDI extrado do volume 2 do livro Core Java.

    1. Use uma janela JFrame normal para o aplicativo.

    2. Configure o painel de contedo da janela JFrame para um JDesktopPane.

    desktop = new JDesktopPane();

    setContentPane(desktop);

    3. Construa janelas JInternalFrame. Voc pode especificar se deseja os cones para redimensionar ou

    fechar o quadro. Normalmente, voc quer todos os cones.

    JInternalFrame iframe = new JInternalFrame(titulo, true, true, true, true)

    4. Inclua components no painel de contedo do quadro.

    iframe.getContentPane().add(c);

    5. Configure um cone de quadro. O cone exibido no canto superior esquerdo do quadro.

    iframe.setFrameIcon(icone);

    6. Configure o tamanho do quadro interno. Assim como nos normais, os quadros internos tm

    inicialmente um tamanho igual a 0 por 0 pixels. Como voc no quer ter todos os quadros internos

    exibidos uns sobre os outros, deve usar uma posio varivel para o quadro seguinte. Use o mtodo

    reshape para definir a posio e o tamanho do quadro:

    iframe.reshape(nextFrameX, nextFrameY, width, height);

    7. Assim como com JFrames, voc precisa tornar o quadro visvel.

    iframe.setVisible(true);

    8. Inclua o quadro no JDesktopPane.

    desktop.add(iframe);

    9. Provavelmente, voc quer transformar o novo quadro no quadro selecionado. Dos quadros internos

    na rea de trabalho, apenas o quadro selecionado recebe o foco do teclado. Na aparncia e

    comportamento Metal, o quadro selecionado tem uma barra de ttulo azul, enquanto os outros

    quadros tm uma barra de ttulo cinza. Voc usa o mtodo setSelected para selecionar um quadro.

    Entretanto, a propriedade selecionada pode ser vetada o quadro correntemente selecionado pode

    se recusar a perder o foco. Nesse caso, o mtodo setSelected lana uma PropertyVetoException, que

    voc precisa tratar.

    try {

    iframe.setSelected(true);

    }catch(PropertyVetoException e){

    // tentativa vetada

  • 2009 Antonio Passos | http://www.antoniopassos.com.br/ead |Todos os direitos reservados

    7 Desenvolvimento de aplicativos desktop em Java Utilizando padres

    }

    10. Voc provavelmente quer mover a posio do prximo quadro interno para baixo, para que ele no se

    sobreponha ao quadro existente. Uma boa distncia entre quadros a altura da barra de ttulo, que

    voc pode obter como

    int frameDistante = iframe.getHeight() iframe.getContentPane().getHeight();

    11. Use essa distncia para determinar a posio do prximo quadro interno.

    nextFrameX += frameDistante;

    nextFrameY += frameDistante;

    if (nextFrameX + width > desktop.getWidth()){

    nextFrameX = 0;

    }

    if (nextFrameY + height > desktop.getHeight()){

    nextFrameY = 0;

    }

    Referncia consultada

    HORSTMANN, Cay S. & CORNELL, Gary. Core Java 2 Volume I - Fundamentos. So Paulo: MAKRON Books,

    2001.

    HORSTMANN, Cay S. & CORNELL, Gary. Core Java 2 Volume II Recursos avanados. So Paulo: MAKRON

    Books, 2001.