Aula 6
Prof. Roberto Rosa
[email protected]

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.

Além do JFrame/JInternalFrame utilizaremos outros componentes que
seguem abaixo na lista:

JMenu

JMenuBar

JMenuItem

JSeparator

JCheckBoxMenuItem

JRadioButtonMenuItem

JDesktopPane

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

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.

No Swing temos 3 tipos de Itens de Menu, são eles:

JMenuItem

JCheckBoxMenuItem

JRadioButtonMenuItem

A figura a seguir mostra os tipos de menu:

Tipos 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:

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 com JSeparator

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

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.

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.

O JDesktopPane encontra-se na paleta → categoria Contêineres →
painel de Área de Trabalho conforme ilustra a figura:

Onde encontrar 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:

Menu com JDesktopPane

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.

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:

Obs.: Nessa caixa de diálogo, você deve escolher "Forms GUI Swing" em
seguida "Formulário JInternalFrame", conforme figura:

Criando JInternalFrame

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


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.

Inserindo evento no item de menu

Ao escolher o evento, automaticamente ele nos levará para o código
criando um método, conforme Figura:

Código do evento ActionPerformed criado

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.

Ao clicar em "KeyPressed" o NetBeans redicionará para o código criando
outro
método
conforme figura:
abaixo
do
método
jmiGuiTesteActionPerformed,

Código do evento KeyPressed criado

Método abrirGUITeste sendo chamado nos evento

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.

GUIMenu abrindo GUITeste
Download

Itens de Menu