350 likes | 431 Views
Prof. Roberto Rosa robertorsci@gmail.com. LINGUAGEM DE PROGRAMAÇÃO VISUAL II. Aula 6. Menu Principal com JFrame e JInternalFrame.
E N D
Prof. Roberto Rosa robertorsci@gmail.com LINGUAGEM DE PROGRAMAÇÃO VISUAL II 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
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á "FormJFrame" e sim "FormJInternalFrame". Mas porque eu utilizo um Form diferente do JFrame? A explicação é simples: O FormJFrame vem com o método main(), enquanto o FormInternalFrame não vem com o método main(). Se colocarmos 2 FormJFrame 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 FormJPanel. 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 • 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 → keypressed. 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... • Ao clicar em "KeyPressed" o NetBeansredicionará 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... • GUIMenuabrindo GUITeste