Interfaces Gráficas em Java Parte 3

72
INTERFACES GRÁFICAS SWING – PARTE 3 Prof.ª M.ª Elaine Cecília Gatto

Transcript of Interfaces Gráficas em Java Parte 3

Page 1: Interfaces Gráficas em Java Parte 3

INTERFACES GRÁFICAS SWING – PARTE 3

Prof.ª M.ª Elaine Cecília Gatto

Page 2: Interfaces Gráficas em Java Parte 3

MENUS E SUBMENUS

Page 3: Interfaces Gráficas em Java Parte 3

ASPECTOS BÁSICOS

• JMenuBar: um objeto que contém o menu de nível superior do aplicativo

• Jmenu: um menu é composto por um ou mais JMenuItens. É o menu padrão.

• JMenuItem: um objeto que preenche os menus

• JCheckBoxMenuItem: um item de menu de caixa de seleção

• JRadioButtonMenuItem: um item de menu de botão de rádio

Page 4: Interfaces Gráficas em Java Parte 3

ASPECTOS BÁSICOS

• Para criar um menu principal para uma aplicação:

• Criar um objeto JMenuBar (container para menus)

• Um JMenu é adicionado a um JMenuBar

• Cada JMenu contem um ou mais itens selecionáveis

• JMenuItem define uma seleção que pode ser feita por umusuário e é o iten exibido por um JMenu

• JCheckBoxMenuItem e JRadioButtonMenuItem extendem eJMenuItem: menus padrão ou popup

Page 5: Interfaces Gráficas em Java Parte 3

ASPECTOS BÁSICOS

• Todos os itens de menu são essencialmente botões poisestendem de AbstractButton

• Criando submenus:

• Criar e preencher um objeto Jmenu

• Depois adiciona-lo a outro objeto Jmenu

Page 6: Interfaces Gráficas em Java Parte 3

ASPECTOS BÁSICOS

• Um evento de ação é gerado quando um item de menu éselecionado

• Examinando o comando de ação você pode determinar qualitem do menu foi selecionado

• Sistemas de menu tendem a ficar muito grandes, tomarcuidado ao programa-los

Page 7: Interfaces Gráficas em Java Parte 3

JMENUBAR

• Conjunto mínimo para a construção de menus: JMENUBAR,

JMENU e JMENUITEM

• Container para menus

• Herda de Jcomponent

• Inicialmente a barra estará vazia.

• Deve ser preenchida com menus antes de usá-la

• Cada aplicação tem UMA E SOMENTE UMA barra de menus

Page 8: Interfaces Gráficas em Java Parte 3

JMENUBAR

• Método add(): adiciona um menu à barra de menus:

Jmenu add(Jmenu menu)

• Menu é uma instancia de Jmenu que é adicionada à barra de

menus

• Menus são posicionados da esquerda para a direita na ordem de

adição

Page 9: Interfaces Gráficas em Java Parte 3

JMENUBAR

• Para adicionar um menu em um local especifico usar

Component add (Component menu, int índice)

• Menu é adicionado no ÍNDICE especificado

• 0 é o valor inicial. Um menu com índice 0 fica na extrema

esquerda

Page 10: Interfaces Gráficas em Java Parte 3

JMENUBAR

• Para remover um menu que não deseja mais:

remove (Component menu)

• Ou

remove (int índice)

• Menu é uma referencia ao menu que será removido.

• Índice é o valor do índice do menu que se quer remover

Page 11: Interfaces Gráficas em Java Parte 3

JMENUBAR

• Para obter o numero de itens do menu

getMenuComponentCount()

• Para obter um array dos itens do menu

Component[] getMenuComponentes()

Page 12: Interfaces Gráficas em Java Parte 3

JMENUITEM

• Encapsula um elemento de menu

• Elementos:

• Opção vinculada a alguma ação do programa (salvar ou

fechar)

• Pode fazer um submenu ser exibido

• Todo item de um menu pode ser considerado um tipo

especial de botão

Page 13: Interfaces Gráficas em Java Parte 3

JMENUITEM

• Construtor: cria um item de menu com um nome

especifico:

JMenuItem (String nome)

• Ativar ou desativar um item de menu:

setEnable(boolean enable)

Page 14: Interfaces Gráficas em Java Parte 3

MENU PRINCIPAL

• Definido pela barra de menus

• É o mais usado

• Cromo criar um menu principal:

• Criar um objeto jmenubar

• Construir cada menu que estará na barra

• Incluir itens (jmenuitem)

Page 15: Interfaces Gráficas em Java Parte 3

MENU PRINCIPAL

• Cromo criar um menu principal:

• Adicionar os menus à barra de menus

• A barra de menus deve ser adicionada a um jframe

• Cada item de menu deve ter um ouvinte de ação e um

tratador de eventos

Page 16: Interfaces Gráficas em Java Parte 3

MENU PRINCIPAL

• EXEMPLO:

• MenuDemo (menu estático)

• DayMenuDemo (menu dinâmico)

Page 17: Interfaces Gráficas em Java Parte 3

TECLAS DE ATALHO

• Mnemônicos

• Define uma tecla cuja digitação permite a seleção de um item

em um menu ativo

• Aceleradores

• É uma tecla que permite a seleção de um item de menu sem

ser preciso ativar o menu antes

Page 18: Interfaces Gráficas em Java Parte 3

TECLAS DE ATALHO

• Um mnemônico pode ser especificado quando um objeto for

construído:

JMenuItem(String nome, int mnem)

• Definir um mnemônico:

setMnemonic(int mnem)

Page 19: Interfaces Gráficas em Java Parte 3

TECLAS DE ATALHO

• Int mnem:

• constantes definidas em java.awt.event.KeyEvent

• KeyEvent.VK_A

• KeyEvent.VK_B

• KeyEvent.VK_C

• ETC.

• Mnemônicos não diferenciam maiúsculas de minúsculas

Page 20: Interfaces Gráficas em Java Parte 3

TECLAS DE ATALHO

• Padrão: primeira letra coincidente do item de menu serásublinhada

• Para sublinhar uma letra diferente: especificar o índice daletra como argumento em

setDisplayedMnemonicInfdex(int indice)

Page 21: Interfaces Gráficas em Java Parte 3

TECLAS DE ATALHO

• Aceleradores

setAccelerator( KeyStroke ks )

• Ks é a combinação de teclas que é pressionada na seleçãodo item de menu

• KeyStroke é uma classe que contém métodos para aconstrução de vários tipos de aceleradores porpressionamento de teclas

Page 22: Interfaces Gráficas em Java Parte 3

TECLAS DE ATALHO

getKeyStroke( int ch, int modificador )

• Ch especifica o caracteres acelerador e é um valor de tipo KEYEVENT

• Modificador deve ser uma ou mais das seguintes constantes• InputEvent.ALT_DOWN_MASK,

InputEvent.CTRL_DOWN_MASK, InputEvent.SHIFT_DOWN_MASK, InputEvent.ALT_GRAPH_DOWN_MASK, InputEvent.META_DOWN_MASK

Page 23: Interfaces Gráficas em Java Parte 3

TECLAS DE ATALHO

• Tecla de caracteres: VK_A

• Modificador: INPUTEVENT.CTRL_DOWN_MASK

• RESULTADO: CTRL + A será o atalho

• Exemplo: MenuDemoMnem

Page 24: Interfaces Gráficas em Java Parte 3

TECLAS DE ATALHO

• Tecla de caracteres: VK_A

• Modificador: INPUTEVENT.CTRL_DOWN_MASK

• RESULTADO: CTRL + A será o atalho

• Exemplo: MenuDemoMnem

• Usar ALT + tecla para selecionar o menu principal e CTRL + tecla para as opções do menu

Page 25: Interfaces Gráficas em Java Parte 3

IMAGENS

• Uma imagem pode ser adicionada em um menu

JMenItem ( Icon imagem )

• Cria um item de menu que exibe a imagem especificada

JMenuItem ( String nome, Icon imagem )

• Cria um item de menu com o nome e a imagem especificados

Page 26: Interfaces Gráficas em Java Parte 3

IMAGENS

• Um ícone pode ser adicionado a um item de menu, bastausar setIcon()

• ícone de desativação: é exibido quando o item de menuestiver inativo, basta usar setDisableIcon()

• Dica de ferramenta: um texto que aparece quando você parao mouse sobre ele: setToolTipoText (String dica).Exemplo: jmiSobre.setToolTipText(“Sobre esteprograma”);

Page 27: Interfaces Gráficas em Java Parte 3

JCheckBoxMenuitem

• Podem otimizar seu aplicativo

• JCheckBoxMenuitem herda de JMenuItem

• Funciona como uma caixa de seleção autônoma

• Gera eventos de ação e um evento de item quando seu estadomuda

JCheckBoxMenuItem ( String nome )

• Constroi um item de menu de caixa de seleção com o nome especificado

Page 28: Interfaces Gráficas em Java Parte 3

JCheckBoxMenuItem

• Constroi um item de menu de caixa de seleção com o nome eoestado de seleção especificado

JCheckBoxMenuItem ( String nome, boolean estado )

• Se estado for TRUE, a caixa estará marcada

Page 29: Interfaces Gráficas em Java Parte 3

JRadioButtonMenuItem

• Funciona como um botão de rádio autônomo

• Gera eventos de item e ação

• Devem ser inseridos em um grupo de botões para exibirem umcomportamento de seleção mutuamente exclusivo

JRadioButtonMenuItem ( String nome )

• Cria um item de menu de botão de rádio associado ao nomeespecificado por nome

Page 30: Interfaces Gráficas em Java Parte 3

JRadioButtonMenuItem

• Cria um item de menu de botão de rádio com o nome e o estadode seleção especificado

JRadioButtonMenuItem ( String nome, boolean estado )

• Se estado for igual a true, inicialmente o botão estarápressionado.

• Exemplo: MenuDemoReC

Page 31: Interfaces Gráficas em Java Parte 3

JRadioButtonMenuItem

• Cria um item de menu de botão de rádio com o nome e o estadode seleção especificado

JRadioButtonMenuItem ( String nome, boolean estado )

• Se estado for igual a true, inicialmente o botão estarápressionado.

• Exemplo: MenuDemoReC

Page 32: Interfaces Gráficas em Java Parte 3

CAIXAS DE DIÁLOGO

Page 33: Interfaces Gráficas em Java Parte 3

INTRODUÇÃO

• Usado em situações em que é necessário vincular dois ou mais

desses controles como uma unidade para tratar operações de

entrada mais sofisticadas.

• É um janela separada que solicita algum tipo de resposta ao

usuário

Page 34: Interfaces Gráficas em Java Parte 3

INTRODUÇÃO

• Contem pelo menos uma MENSAGEM e um BOTÃO

• Fornece uma maneira de organizar os componentes necessários

a situações de entrada complexas

• Fornece ao programa uma maneira de solicitar ao usuário a

entrada que precisa para prosseguir

Page 35: Interfaces Gráficas em Java Parte 3

INTRODUÇÃO

• Exemplos:

• Uma caixa de diálogo para permitir selecionar a fonte, o tamanho

e o estilo do texto.

• Uma caixa de diálogo para pedir o nome de usuário e a senha e

esperar até que os dados sejam inseridos.

• Uma caixa de diálogo que permita configurar uma conexão de

modem.

Page 36: Interfaces Gráficas em Java Parte 3

JOPTIONPANE

• É uma caixa de dialogo simples.

• Interage com o usuário e espera uma resposta.

• Exemplo: deseja sair do programa?

• Quatro tipos básicos:

• Mensagem

• Confirmação

• Entrada

• Opções

Page 37: Interfaces Gráficas em Java Parte 3

JOPTIONPANE

• Mensagem:

• Exibe uma mensagem e espera até o usuário pressionar

o botão ok

• Forma de assegurar que o usuário está ciente de

algumas informações

• Exemplo: informar ao usuário que uma conexão de rede

foi perdida

Page 38: Interfaces Gráficas em Java Parte 3

JOPTIONPANE

• Confirmação:

• Faz uma pergunta ao usuário e espera o usuário

escolher

• Normalmente usada quando uma ação deve ser

confirmada

• Exemplo: sair sem salvar?

Page 39: Interfaces Gráficas em Java Parte 3

JOPTIONPANE

• Entrada:

• Permite que o usuário insira uma string ou selecione um

item de uma lista

• Exemplo: obter um nome do teclado

• OPÇÕES:

• Permite especificar uma lista de opções para o usuário

selecionar

Page 40: Interfaces Gráficas em Java Parte 3

JOPTIONPANE

• JOPTIONPANE não deriva de JDIALOG

• JOPTIONPANE é um container para os componentes que

serão usados pelo diálogo

• JOPTIONPANE usa JDIALOG

• JOPTIONPANE constrói um objeto JDIALOG

automaticamente e se adiciona a esse objeto

Page 41: Interfaces Gráficas em Java Parte 3

JOPTIONPANE

• JOPTIONPANE fornece uma maneira otimizada de criar e

gerenciar caixas de diálogos simples

• CAIXAS MODAIS:

• É uma caixa que demanda uma resposta antes do programa

continuar.

• Não é possível redirecionar o FOCO para outra parte do

aplicativo sem antes fechar esta janela.

• Interrompe o programa até o que o usuário responda

Page 42: Interfaces Gráficas em Java Parte 3

JOPTIONPANE

• MODELESS:

• Caixas de diálogos não modais

• NÃO impede que outras partes do programa sejam

usadas

• O foco pode ser redirecionado para outra janelas

Page 43: Interfaces Gráficas em Java Parte 3

JOPTIONPANE

• JOPTIONPANE dá suporte a duas categorias básicas de

métodos SHOW (mostrar)

• MAIS COMUM: Uma caixa de diálogo que usa JDIALOG

para conter o diálogo

• MENOS COMUM: Usa JINTERNALFRAME para conter o

diálogo

Page 44: Interfaces Gráficas em Java Parte 3

JOPTIONPANE

• Quatro métodos FACTORY para criar caixas de diálogo

padrão baseadas em JDIALOG:

• showConfirmDialog()

• showInputDialog()

• showMessageDialog()

• showOptionDialog()

Page 45: Interfaces Gráficas em Java Parte 3

SHOWMESSAGEDIALOG()

• Caixa de dialogo mais simples que pode se construída

• Exibe uma mensagem E espera o usuário apertar um botão

showMessageDialog(Component pai, Object msg);

• Pai = especifica o componente em relação ao qual a caixa de

diálogo será exibida

Page 46: Interfaces Gráficas em Java Parte 3

SHOWMESSAGEDIALOG()

• Se pai = null: a caixa de diálogo é exibida no centro da tela.

• MSG = mensagem a ser exibida

• Exceção:

• HEADLESSEXCEPTION

• Ocorre se tentar exibir uma caixa de diálogo em um

ambiente não interativo (mouse ou teclado

desconectados)

Page 47: Interfaces Gráficas em Java Parte 3

SHOWMESSAGEDIALOG()

• EXEMPLO: MsgDialogDemo

• Segunda forma de usar showMessageDialog()

showMessageDialog(Component pai, Object msg, String

titulo, int msg)

• titulo = especifica um título para a caixa de diálogo

• Msg = natureza da mensagem conforme tabela a seguir

Page 48: Interfaces Gráficas em Java Parte 3

SHOWMESSAGEDIALOG()

• ERROR_MESSAGE: indica que uma mensagem de erro será exibida.

Ícone de erro.

• INFORMATION_MESSAGE: indica que uma mensagem informativa será

exibida. Mensagem padrão.

• PLAIN_MESSAGE: indica uma mensagem simples. Sem ícone.

• QUESTION_MESSAGE: indica que uma mensagem interrogativa será

exibida.

• WARNING_MESSAGE: indica que uma mensagem de aviso será exibida.

Ícone de aviso

Page 49: Interfaces Gráficas em Java Parte 3

SHOWMESSAGEDIALOG()

• Terceira forma de usar showMessageDialog()

showMessageDialog(Component pai, Object msg, String

titulo, int msg, Icon imagem)

• Você pode especificar a imagem desejada para o ícone.

Page 50: Interfaces Gráficas em Java Parte 3

SHOW CONFIRM DIALOG

• Solicita uma resposta básica SIM/NÃO ao usuário

showConfirmDialog(Component pai, Object msg);

• Pai = especifica o componente em relação ao qual a caixa de

diálogo será exibida. Se NULL então é exibida no centro

• MSG = mensagem

Page 51: Interfaces Gráficas em Java Parte 3

SHOW CONFIRM DIALOG

• Exemplo: ConfirmDialogDemo

• OUTRAS FORMAS

• showConfirmDialog(Component pai, Object msg, String

titulo, int op);

• showConfirmDialog(Component pai, Object msg, String

titulo, int Opc, int iMsg);

• showConfirDialog(Component pai, Object msg, String

titulo, int Opc, int iMsg, Icon icon);

Page 52: Interfaces Gráficas em Java Parte 3

SHOW CONFIRM DIALOG

• As opções são os botões que o usuário pode selecionar e

são definidos pelas constantes:

• OK_CANCEL_OPTION: inclui botões OK e CANCEL

• YES_NO_OPTION: inclui botões YES e NO

• YES_NO_CANCEL_OPTION: inclui botões YES, NO e

CANCEL

Lembre-se de tratar corretamente as ações!

Page 53: Interfaces Gráficas em Java Parte 3

SHOW CONFIRM DIALOG

• iMsg deve ser uma das constantes a seguir

• ERROR_MESSAGE

• INFORMATION_MESSAGE

• PLAIN_MESSAGE

• QUESTION_MESSAGE

• WARNING_MESSAGE

• O ícone pode ser modificado por meio de ICON

Page 54: Interfaces Gráficas em Java Parte 3

SHOW INPUT DIALOG

• O usuário pode inserir uma string

showInputDialog(Object msg);

• Retorna a string digitada pelo usuário em MSG quando se

pressiona OK

• Ao pressionar CANCELAR tudo é descartado

Page 55: Interfaces Gráficas em Java Parte 3

SHOW INPUT DIALOG

• Exemplo

• OUTRAS FORMAS:

• showInputDialog(Object msg, Object valorInicial);

• showInputDialog(Component pai, Object msg);

• showInputDialog(Component pai, Object msg, Object

valorInicial);

Page 56: Interfaces Gráficas em Java Parte 3

SHOW INPUT DIALOG

• OUTRAS FORMAS:

• showInputDialog(Component pai, Object msg, String titulo, int

iMsg);

• showInputDialog(Component pai, Object msg, String titulo, int

iMsg, Icon imagem, Object [ ] vals, Object valorInicial);

Page 57: Interfaces Gráficas em Java Parte 3

SHOW INPUT DIALOG

• valorInicial: valor inicial a ser inserido no campo de texto

• Titulo: especifica o titulo

• iMsg: tipo de caixa de diálogo

• Icon: ícone

• VALS: conjunto de opções

Page 58: Interfaces Gráficas em Java Parte 3

SHOW OPTION DIALOG

• Cria uma caixa de diálogo que contem elementos a serem

especificados, isto é, uma caixa personalizada

showOptionDialog(Component pai, Object msg, String titulo,

int op, int ims, Icon ícone, Object[] opções, Object

valorInicial);

Page 59: Interfaces Gráficas em Java Parte 3

SHOW OPTION DIALOG

• O parâmetro opções somente será usado se OP for NULL

• Opções: DEFAULT_OPTION, OK_CANCEL_OPTION,

YES_NO_OPTION, YES_NO_CANCEL_OPTION

• Opções: contem as opções que serão exibidas na caixa de

diálogo

• Cada string do array passa a ser o nome de um botão que ao ser

pressionado retorna o índice e fecha a janela

Page 60: Interfaces Gráficas em Java Parte 3

SHOW OPTION DIALOG

• Exemplo

• Não há controle sobre o layout, isto é, não sabemos como os

botões aparecerão na caixa de diálogo

• As opções personalizadas sobrepõem as opções padrão

• O formato das caixas de diálogo não mudam muito e bem

definidos, por isso são mais limitadas.

Page 61: Interfaces Gráficas em Java Parte 3

JDIALOG

• Componentes podem ser adicionados a ele

• Gerenciador de layout é atributo a ele

• Um tamanho pode ser especificado

• setVisible() também é usado

• Uma barra de menus pode lhe ser dada

• Herda várias classes

• Caixas modais ou não modais

Page 62: Interfaces Gráficas em Java Parte 3

JDIALOG

Jdialog(Frame pai, String titulo, boolean modal)

• Cria uma caixa de diálogo cujo proprietário é especificado

por pai

• Se modal for TRUE, a caixa será modal

• O titulo da caixa é especificado por titulo

Page 63: Interfaces Gráficas em Java Parte 3

JDIALOG

• Para criar e exibir uma caixa de diálogo criada por JDIALOG

• Criar um objeto JDIALOG

• Especificar o gerenciador de layout

• Especificar o tamanho

• Especificar a forma de fechamento padrão

• Adicionar componentes ao painel de conteúdo na caixa

• Exibir a caixa

Page 64: Interfaces Gráficas em Java Parte 3

JDIALOG

• setVisible(false): remove uma caixa de dialogo. Use este

recurso quando precisar usar a caixa com frequência no

aplicativo. Apenas remove a caixa da tela.

• dispose(): quando for usar poucas vezes. Libera todos os

recursos associados a caixa

• Exemplo:

Page 65: Interfaces Gráficas em Java Parte 3

JDIALOG

• Caixa não modal

Jdialog(Frame pai, String titulo)

• EXEMPLO: JDialogDemoNaoModal

Page 66: Interfaces Gráficas em Java Parte 3

JFILECHOOSER

• É uma caixa de diálogo interna

• Automatiza uma janela de seleção de arquivos

• É consistente e eficiente

JFileChooser();

• Exibe o diretório padrão

Page 67: Interfaces Gráficas em Java Parte 3

JFILECHOOSER

JFileChooser(File dir)

JFileChosser(String dir)

• Exibe o diretório especificado por DIR

• Se DIR = NULL então o diretório padrão será usado

Page 68: Interfaces Gráficas em Java Parte 3

JFILECHOOSER

• Métodos para exibir JFilechooser

• showOpenDialog(Component pai): Open dialog exibe

a caixa de diálogo padrão OPEN

• showSaveDialog(Component pai): exibe a caixa de

dialogo padrão SAVE

• showDialog(Component pai, String nome): especifica

um titulo e um nome de botão personalizado

Page 69: Interfaces Gráficas em Java Parte 3

JFILECHOOSER

• Todos os métodos retornam um inteiro que indica o

resultado do processo de seleção de arquivo

• APPROVE_OPTION: arquivo selecionado

• CANCEL_OPTION: usuário cancelou a ação

• ERROR_OPTION: erro encontrado

Page 70: Interfaces Gráficas em Java Parte 3

JFILECHOOSER

• Se retornar APPROVE_OPTION não significa que o arquivo

exista ou o nome seja válido

• Método que retorna um objeto FILE e representa o arquivo

selecionado:

getSelectedFile()

• Dentre outros métodos aprendidos em arquivos

Page 71: Interfaces Gráficas em Java Parte 3

JFILECHOOSER

• Diretórios são tipos especiais de arquivos

• Exemplo:

• JFileChooser

• FileChooserDemo

• JavaFilefilter

Page 72: Interfaces Gráficas em Java Parte 3

EXERCÍCIOS