O documento discute interfaces gráficas Swing, especificamente menus e submenus. Ele explica os componentes básicos para criar menus como JMenuBar, JMenu e JMenuItem e como adicioná-los. Também discute como criar submenus, atalhos de teclas para menus e adicionar imagens. Finalmente, introduz caixas de diálogo e explica como usar JOptionPane para criar caixas de diálogo simples.
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
4. 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 um
usuário e é o iten exibido por um JMenu
• JCheckBoxMenuItem e JRadioButtonMenuItem extendem e
JMenuItem: menus padrão ou popup
5. ASPECTOS BÁSICOS
• Todos os itens de menu são essencialmente botões pois
estendem de AbstractButton
• Criando submenus:
• Criar e preencher um objeto Jmenu
• Depois adiciona-lo a outro objeto Jmenu
6. ASPECTOS BÁSICOS
• Um evento de ação é gerado quando um item de menu é
selecionado
• Examinando o comando de ação você pode determinar qual
item do menu foi selecionado
• Sistemas de menu tendem a ficar muito grandes, tomar
cuidado ao programa-los
7. 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
8. 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
9. 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
10. 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
11. JMENUBAR
• Para obter o numero de itens do menu
getMenuComponentCount()
• Para obter um array dos itens do menu
Component[] getMenuComponentes()
12. 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
13. JMENUITEM
• Construtor: cria um item de menu com um nome
especifico:
JMenuItem (String nome)
• Ativar ou desativar um item de menu:
setEnable(boolean enable)
14. 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)
15. 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
17. 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
18. 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)
19. 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
20. TECLAS DE ATALHO
• Padrão: primeira letra coincidente do item de menu será
sublinhada
• Para sublinhar uma letra diferente: especificar o índice da
letra como argumento em
setDisplayedMnemonicInfdex(int indice)
21. TECLAS DE ATALHO
• Aceleradores
setAccelerator( KeyStroke ks )
• Ks é a combinação de teclas que é pressionada na seleção
do item de menu
• KeyStroke é uma classe que contém métodos para a
construção de vários tipos de aceleradores por
pressionamento de teclas
22. 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
23. TECLAS DE ATALHO
• Tecla de caracteres: VK_A
• Modificador: INPUTEVENT.CTRL_DOWN_MASK
• RESULTADO: CTRL + A será o atalho
• Exemplo: MenuDemoMnem
24. 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
25. 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
26. IMAGENS
• Um ícone pode ser adicionado a um item de menu, basta
usar setIcon()
• ícone de desativação: é exibido quando o item de menu
estiver inativo, basta usar setDisableIcon()
• Dica de ferramenta: um texto que aparece quando você para
o mouse sobre ele: setToolTipoText (String dica).
Exemplo: jmiSobre.setToolTipText(“Sobre este
programa”);
27. 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 estado
muda
JCheckBoxMenuItem ( String nome )
• Constroi um item de menu de caixa de seleção com o nome
especificado
28. JCheckBoxMenuItem
• Constroi um item de menu de caixa de seleção com o nome eo
estado de seleção especificado
JCheckBoxMenuItem ( String nome, boolean estado )
• Se estado for TRUE, a caixa estará marcada
29. 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 um
comportamento de seleção mutuamente exclusivo
JRadioButtonMenuItem ( String nome )
• Cria um item de menu de botão de rádio associado ao nome
especificado por nome
30. JRadioButtonMenuItem
• Cria um item de menu de botão de rádio com o nome e o estado
de seleção especificado
JRadioButtonMenuItem ( String nome, boolean estado )
• Se estado for igual a true, inicialmente o botão estará
pressionado.
• Exemplo: MenuDemoReC
31. JRadioButtonMenuItem
• Cria um item de menu de botão de rádio com o nome e o estado
de seleção especificado
JRadioButtonMenuItem ( String nome, boolean estado )
• Se estado for igual a true, inicialmente o botão estará
pressionado.
• Exemplo: MenuDemoReC
33. 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
34. 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
35. 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.
36. 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
37. 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
38. 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?
39. 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
40. 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
41. 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
42. 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
43. 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
44. JOPTIONPANE
• Quatro métodos FACTORY para criar caixas de diálogo
padrão baseadas em JDIALOG:
• showConfirmDialog()
• showInputDialog()
• showMessageDialog()
• showOptionDialog()
45. 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
46. 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)
47. 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
48. 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
49. 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.
50. 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
51. 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);
52. 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!
53. 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
54. 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
56. 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);
57. 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
58. 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);
59. 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
60. 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.
61. 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
62. 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
63. 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
64. 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:
66. 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
68. 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
69. 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
70. 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
71. JFILECHOOSER
• Diretórios são tipos especiais de arquivos
• Exemplo:
• JFileChooser
• FileChooserDemo
• JavaFilefilter