Java

Page 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:

© 2009 Antonio Passos | http://ead.antoniopassos.net |Todos os direitos reservados

1


Desenvolvimento de aplicativos desktop em Java Utilizando padrões

Métodos (herdados ou não): • •

• • •

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 posição. As coordenadas x e y usam as coordenadas do contêiner se o componente não for um componente de nível mais alto, ou as coordenadas da tela se o componente for de nível mais alto. Dimension getSize() o Obtém o tamanho atual do componente. void setTitle(String título) o Especifica o texto na barra de título do componente igual a título. Dimension getScreenSize() o Obtém o tamanho da tela do usuário.

Componente JLabel Cria um rótulo simples com ou sem um ícone. Construtor(es) • • • •

JLabel (String texto) o Onde texto corresponde ao rótulo 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.

Método(s) • •

void setText(String texto) o Altera o texto do component. void setIcon(Icon ícone)

© 2009 Antonio Passos | http://ead.antoniopassos.net |Todos os direitos reservados

2


Desenvolvimento de aplicativos desktop em Java Utilizando padrões 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 número de colunas do campo. JTextField(String texto, int colunas) o Onde texto corresponde ao texto inicial exibido pelo campo e colunas, à largura do campo.

Método(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 usuário pode editar o conteúdo do campo.

Componente JTextArea Cria uma área de texto. Construtor(es)

JTextArea(int linhas, in colunas)

o

Onde linhas especifica o número de linhas que o componente apresentará e colunas, a dimensão da área de texto em número de caracteres.

JTextArea(String texto, int linhas, int colunas)

o

Onde texto especifica o texto inicial do componente.

Método(s)

void setColumns(int colunas)

o •

void setRows(int linhas)

o •

Configura o número preferencial de linhas do componente

void append(String novoTexto)

o •

Configura o número preferencial de colunas do componente

Acrescenta o texto fornecido ao texto já existente no componente

void setLineWrap(boolean quebrar)

o

Ativa ou não a quebra automática de linha.

© 2009 Antonio Passos | http://ead.antoniopassos.net |Todos os direitos reservados

3


Desenvolvimento de aplicativos desktop em Java Utilizando padrões •

void setWrapStyleWord(boolean palavra)

o

Se palavra for true, as linhas extensas serão quebradas ao final das palavras. Se for false, serão quebradas sem levar em conta o final das palavras.

void setTab Size(int c)

o

Especifica paradas de tabulação a cada c colunas.

Componente JButton Cria um botão simples com ou sem ícone Construtor(es) • • •

JButton (String rótulo) o Onde rótulo corresponde ao texto a ser exibido na face do botão. JButton (Icon ícone) o Onde ícone corresponde a figura a ser exibida na face do botão. JButton (String rótulo, Icon ícone)

Como criar barra de menus Uma barra de menus é constituída por menus, que por sua vez são constituídos por submenus ou itens de menu. Os passos para criar uma barra de menu são 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 à opção de menu menuArquivo

© 2009 Antonio Passos | http://ead.antoniopassos.net |Todos os direitos reservados

4


Desenvolvimento de aplicativos desktop em Java Utilizando padrões menuArquivo.add(miSair); // Cria o item de menu miSobre JMenuItem miSobre = new JMenuItem("Sobre"); // Adiciona o item de menu miSobre à opção 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); Observação: Para adicionar um separador, invoque sobre o objeto JMenu o método addSeparator(). menuAjuda.addSeparator();

Como tratar eventos gerados por itens de menu Os eventos gerados por itens de menu são eventos de ação. Como tal, devem ser tratados por classe que implementa a interface ActionListener. No método 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 método 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://ead.antoniopassos.net |Todos os direitos reservados

5


Desenvolvimento de aplicativos desktop em Java Utilizando padrões Aplicativo MDI – Multiple Document Interface (interface de múltiplos documentos) – é aquele cujas janelas são aninhadas, ou abertas, dentro de uma janela principal. Abaixo, passo a passo para criar um MDI extraído do volume 2 do livro Core Java. 1. Use uma janela JFrame normal para o aplicativo. 2. Configure o painel de conteúdo 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 conteúdo 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 têm inicialmente um tamanho igual a 0 por 0 pixels. Como você não quer ter todos os quadros internos exibidos uns sobre os outros, deve usar uma posição variável para o quadro seguinte. Use o método reshape para definir a posição e o tamanho do quadro: iframe.reshape(nextFrameX, nextFrameY, width, height); 7. Assim como com JFrames, você precisa tornar o quadro visível. 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 aparência e comportamento Metal, o quadro selecionado tem uma barra de título azul, enquanto os outros quadros têm uma barra de título cinza. Você usa o método 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 método setSelected lança uma PropertyVetoException, que você precisa tratar. try { iframe.setSelected(true); }catch(PropertyVetoException e){ // tentativa vetada

© 2009 Antonio Passos | http://ead.antoniopassos.net |Todos os direitos reservados

6


Desenvolvimento de aplicativos desktop em Java Utilizando padrões } 10. Você provavelmente quer mover a posição do próximo quadro interno para baixo, para que ele não se sobreponha ao quadro existente. Uma boa distância entre quadros é a altura da barra de título, que você pode obter como int frameDistante = iframe.getHeight() – iframe.getContentPane().getHeight(); 11. Use essa distância para determinar a posição do próximo quadro interno. nextFrameX += frameDistante; nextFrameY += frameDistante; if (nextFrameX + width > desktop.getWidth()){ nextFrame 0; } if (nextFrameY + height > desktop.getHeight()){ nextFrameY = 0; }

Referência consultada HORSTMANN, Cay S. & CORNELL, Gary. Core Java 2 – Volume I - Fundamentos. São Paulo: MAKRON Books, 2001. HORSTMANN, Cay S. & CORNELL, Gary. Core Java 2 – Volume II – Recursos avançados. São Paulo: MAKRON Books, 2001.

© 2009 Antonio Passos | http://ead.antoniopassos.net |Todos os direitos reservados

7


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.