Prof. Roberto Rosa robertorsci@gmail.com Aula 6. Vamos criar um projeto contendo um Menu Principal...

Post on 21-Apr-2015

104 views 0 download

Transcript of Prof. Roberto Rosa robertorsci@gmail.com Aula 6. Vamos criar um projeto contendo um Menu Principal...

LINGUAGEM DE PROGRAMAÇÃO VISUAL

II

Prof. Roberto Rosarobertorsci@gmail.com

Aula 6

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