Essa é a classe do tipo
JInternalFrame que usaremos para instanciar as demais.
Dois parâmetros são passados durante a instanciação. O primeiro é o título da janela. O segundo indica a classe pai dos objetos que serão instanciadas por essa classe.
Vejamos o código da classe Tela:
class Tela extends JInternalFrame {
//classe pai dos objetos que serão instanciadas por essa classe
private Menu telaPrincipal;
//método construtor da tela
public Tela(String titulo, Menu telaPrincipal) {
//reescreve o método construtor da classe pai, ajustando o título da janela (neste caso)
super(titulo,true,true,true,true);
setSize(300,200);
setVisible(true);
this.telaPrincipal = telaPrincipal;
telaPrincipal.jdPane.add(this);
}
}
O título é usado no construtor pelo método super(), que sobrescreve o construtor da classe pai, alterando assim o título da página. Os quatro "true" ativam os botões minimizar/maximizar, restaurar e fechar de cada JInternalFrame.
Abaixo está o código completo e sem os comentários:
import java.awt.event.*;
import javax.swing.*;
public class Menu extends JFrame implements ActionListener {
private JMenuBar jmPrincipal = new JMenuBar();
private JMenu jmCadastro = new JMenu("Cadastros");
private JMenuItem jmCadCliente = new JMenuItem("Cliente");
private JMenuItem jmCadFornecedor = new JMenuItem("Fornecedor");
public JDesktopPane jdPane = new JDesktopPane();
Tela telaCadCliente, telaCadFornecedor, telaCadProduto;
public static void main(String args[]) {
Menu menu = new Menu();
}
public Menu() {
getContentPane().add(jdPane);
jmPrincipal.add(jmCadastro);
jmCadastro.add(jmCadCliente);
jmCadastro.add(jmCadFornecedor);
setJMenuBar(jmPrincipal);
jmCadCliente.addActionListener(this);
jmCadFornecedor.addActionListener(this);
setSize(800,600);
setVisible(true);
}
public void actionPerformed(ActionEvent evt) {
if (evt.getSource() == jmCadCliente) {
if (telaCadCliente == null)
telaCadCliente = new Tela("Cadastro de Cliente", this);
jdPane.moveToFront(telaCadCliente);
}
if (evt.getSource() == jmCadFornecedor) {
if (telaCadFornecedor == null)
telaCadFornecedor = new Tela("Cadastro de Fornecedor", this);
jdPane.moveToFront(telaCadFornecedor);
}
}
}
class Tela extends JInternalFrame {
private Menu telaPrincipal;
public Tela(String titulo, Menu telaPrincipal) {
super(titulo);
setSize(300,200);
setVisible(true);
this.telaPrincipal = telaPrincipal;
telaPrincipal.jdPane.add(this);
}
}
É isso aí. Espero que o artigo seja útil.
T+