Java: Usando JInternalFrame de forma elegante
Neste artigo mostro uma forma de usar o JInternalFrame dentro de um JDesktopPane de forma simples e elegante para criar aplicações MDI, onde todas as telas do sistema abrem dentro de uma única janela.
Parte 3: Parte 3 - A classe Tela
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:
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:
É isso aí. Espero que o artigo seja útil.
T+
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);
}
}
//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);
}
}
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+
Abraço.
Website: http://www.distribuicoeslinux.com.br