Upload
internet
View
104
Download
0
Embed Size (px)
Citation preview
Menu Principal com JFrame e JInternalFrame
Vamos criar um projeto contendo um Menu Principal que
chamará todas as outras janelas do nosso Sistema. O Menu
principal será criado com o componente JFrame, já que
esse contém o método "main()" que chamará todas as
outras janelas do nosso sistema.
As outras janelas por sua vez não precisam ter método
main(), devido a esse fato utilizaremos um formulário sem
este método, no caso o JInternalFrame.
Menu Principal com JFrame e JInternalFrame
Além do JFrame/JInternalFrame utilizaremos outros
componentes que seguem abaixo na lista:
JMenu
JMenuBar
JMenuItem
JSeparator
JCheckBoxMenuItem
JRadioButtonMenuItem
JDesktopPane
1º passo:
Agora vamos colocar os componentes de Menu. Para isso
acesse a "Paleta" no canto superior direito do Netbeans. Na
paleta clique na categoria "Menus Swing". Em Menus Swing
escolha uma "Barra de Menu"(JMenuBar1) e arraste até o
JFrame, conforme figura a seguir:
Onde encontramos os componentes
Menu Swing
Menu Swing
JMenuBar
Por padrão o JmenuBar1 já vem com dois menus (File e
Edit). Se você clicar em cima dos Menus verá que o nome
deles são respectivamente: JMenu1,JMenu2
Só a barra de menu (JmenuBar) com os 2 menus(JMenu)
não fica legal. Para que um menu fique funcional,
necessitamos inserir os Itens de Menu.
Itens de Menu
No Swing temos 3 tipos de Itens de Menu, são eles:
JMenuItem
JCheckBoxMenuItem
JRadioButtonMenuItem
Itens de Menu
A figura a seguir mostra os tipos de menu:
Tipos de Menu
Itens de Menu
Agora, vamos inserir 4 itens de menu para você entender
como funciona. Cada item de menu inserindo dentro de um
JMenu é uma nova opção, podendo conter quantos
JMenuItem nós desejarmos/precisarmos. A figura a seguir
mostrar como está ficando o nosso menu:
Itens de Menu
Menu
Itens de Menu
Linha Separadora
Em alguns casos você precisará separar os itens de menu
em categorias. Para fazer isso você pode utilizar o
componente JSeparator. Esse componente simplesmente
cria uma linha que separa o menu conforme desejado.
Menu + Separador
Menu com JSeparator
Modificando o nome dos componentes
Agora vamos modificar o nome dos componentes de menu.
Como é bastante componente eu utilizo a seguinte
nomenclatura de nomes para cada um dos menus e itens
de menu:
JmenuBar – jmb
Jmenu – jm
JmenuItem – jmi
JCheckBoxMenuItem - jcbmi
JRadioButtonMenuItem - jrbmi
JDesktopPane
O JDesktopPane é um Painel da Área de Trabalho(como o
próprio nome já diz). Ele serve para que as janelas sejam
abertas apenas dentro da janela principal do sistema, não
permitindo que as janelas saiam para fora da janela
principal. Isso é o chamado menu MDI.
JDesktopPane
Bom, agora que já sabemos para o que ele serve, o
próximo passo é inserir um JDesktopPane, ou seja, um
componente que será uma Área de Trabalho onde serão
abertas todas as outras janelas (JInternalFrame) do nosso
sistema.
JDesktopPane
O JDesktopPane encontra-se na paleta → categoria
Contêineres → painel de Área de Trabalho conforme ilustra
a figura:
JDesktopPane
Onde encontrar JDesktopPane
JDesktopPane
Obs.: Se o Netbeans estiver sendo executado no Sistema Operacional
Windows, a cor de fundo padrão do Painel da Área de Trabalho pode
variar. Geralmente as cores utilizadas são o Azul ou preto.
Após inserir o JDesktopPane mude o nome da variável para algo do tipo:
jAreaTrabalho
jdpAreaTrabalho
O componente que servirá como área de trabalho deverá ser
expandido em toda a janela principal ou em parte dela deixando
algumas bordas, conforme a figura:
JDesktopPane
Menu com JDesktopPane
Vinculando uma janela no Menu
Bom, agora vamos abrir a nossa primeira janela. Ao contrário
do que vinhamos utilizando agora nós vamos utilizar outro
componente do Swing. O nome da janela não será "Form
JFrame" e sim "Form JInternalFrame". Mas porque eu utilizo um
Form diferente do JFrame? A explicação é simples: O Form
JFrame vem com o método main(), enquanto o Form
InternalFrame não vem com o método main(). Se colocarmos 2
Form JFrame no mesmo projeto ao executar o java não saberá
qual das 2 janelas devem ser "rodadas"(executadas). A não ser
que você indique nas propriedades do projeto ou diretamente
no Class path.
Vinculando uma janela no Menu
Alguns desenvolvedores ao invés de utilizar JInternalFrame
acabam utilizando o Form JPanel. Ao meu ver, indifere qual
Form será utilizado; claro, desde que seja um desses 2.
Para abrir uma janela a partir do menu siga as instruções a
seguir:
Vamos primeiro criar a janela que será aberta pelo menu.
Para isso clique com o botão direito do mouse no pacote
"visao" e escolha a opção: Novo → outros. Será aberta uma
caixa de diálogo conforme a figura:
Vinculando uma janela no Menu
Vinculando uma janela no Menu
Obs.: Nessa caixa de diálogo, você deve escolher "Forms
GUI Swing" em seguida "Formulário JInternalFrame",
conforme figura:
Criando JInternalFrame
Vinculando uma janela no Menu
Como é apenas uma janela teste, vou utilizar o seguinte nome: GUITeste.
A Figura a seguir mostra onde ficará a "GuiTeste" recém-criada.
GUITeste recém-criada
Voltando na GUIMenu
Agora volte até a Classe MenuPrincipal. Clique com o botão
direito do mouse no "Item de Menu" que deseja utilizar
para abrir a janela" GuiTeste". A Figura mostra que foi
utilizado o primeiro "Item de Menu" para inserir o Evento
de ActionPerformed.
Criando Evento...
Inserindo evento no item de menu
Criando Evento...
Ao escolher o evento, automaticamente ele nos levará para
o código criando um método, conforme Figura:
Código do evento ActionPerformed criado
Criando Evento KeyPressed...
Clique em "Projeto" novamente. Agora vamos adicionar o
Evento: key → key pressed. Esse evento é responsável pela
abertura da janela se alguma tecla for pressionada. Vamos
restringir para que somente quando o "Enter" for
pressionado a janela abra.
Criando Evento KeyPressed...
Criando Evento KeyPressed...
Ao clicar em "KeyPressed" o NetBeans redicionará para o
código criando outro método abaixo do método
jmiGuiTesteActionPerformed, conforme figura:
Criando Evento KeyPressed...
Código do evento KeyPressed criado
Abrindo a Janela...
Método abrirGUITeste sendo chamado nos evento
Abrindo a Janela...
Obs.: O if() dentro do método KeyPressed serve para testar
se o código da tecla que foi pressionada (getKeyCode()) é
igual ( == ) a tecla Enter (KeyEvent.VK_ENTER).
O resultado final pode ser visualizado na figura que segue.
Quando clicamos no menu Cadastrar -> opção Teste ele
instância e abre a GuiTeste dentro da Área de Trabalho
(JDesktopPane) que criamos.
Executando...
GUIMenu abrindo GUITeste