interfaces gráficas em java parte 3
TRANSCRIPT
INTERFACES GRÁFICAS SWING – PARTE 3
Prof.ª M.ª Elaine Cecília Gatto
MENUS E SUBMENUS
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
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
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
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
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
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
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
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
JMENUBAR
• Para obter o numero de itens do menu
getMenuComponentCount()
• Para obter um array dos itens do menu
Component[] getMenuComponentes()
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
JMENUITEM
• Construtor: cria um item de menu com um nome
especifico:
JMenuItem (String nome)
• Ativar ou desativar um item de menu:
setEnable(boolean enable)
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)
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
MENU PRINCIPAL
• EXEMPLO:
• MenuDemo (menu estático)
• DayMenuDemo (menu dinâmico)
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
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)
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
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)
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
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
TECLAS DE ATALHO
• Tecla de caracteres: VK_A
• Modificador: INPUTEVENT.CTRL_DOWN_MASK
• RESULTADO: CTRL + A será o atalho
• Exemplo: MenuDemoMnem
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
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
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”);
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
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
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
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
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
CAIXAS DE DIÁLOGO
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
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
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.
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
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
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?
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
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
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
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
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
JOPTIONPANE
• Quatro métodos FACTORY para criar caixas de diálogo
padrão baseadas em JDIALOG:
• showConfirmDialog()
• showInputDialog()
• showMessageDialog()
• showOptionDialog()
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
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)
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
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
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.
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
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);
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!
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
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
SHOW INPUT DIALOG
• Exemplo
• OUTRAS FORMAS:
• showInputDialog(Object msg, Object valorInicial);
• showInputDialog(Component pai, Object msg);
• showInputDialog(Component pai, Object msg, Object
valorInicial);
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);
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
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);
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
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.
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
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
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
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:
JDIALOG
• Caixa não modal
Jdialog(Frame pai, String titulo)
• EXEMPLO: JDialogDemoNaoModal
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
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
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
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
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
JFILECHOOSER
• Diretórios são tipos especiais de arquivos
• Exemplo:
• JFileChooser
• FileChooserDemo
• JavaFilefilter
EXERCÍCIOS