:?:
Ola, pessoal.
Precisaria muito de uma dica de como resolver um problema que tenho. Sou iniciante en Java, mas ja desenvolvi algumas coisas nao muito complexas, e me deparei com um problema que nao consigo resolver, e nao encontrei nas pesquisas pela net. O problema é o seguinte, montei um menu de opcoes com jframe, nesse menu tenho varias opcoes de cadastro, consulta, impressao, cada uma dessa opcoes quando clicar é para abrir um jinternalframe, até ai tudobem, consigo abrir, so que quando abro tudo que ponho dentro desse jinternalframe nao aparece na tela, ela fica simplismente limpa sem nada, sendo que coloquei varios jlabel, jtextfield. queria saber onde que posso está errando, ou se alguem tem algum codigo exemplo parecido com esse meu para que possa estudar e resolver meu problema…
toda ajuda é bem-vinda.
Agradeço desde já…
Batista
Você está jogando o seu JInternalFrame dentro de um JDesktop?
E ai kra, blz?
Muito provavel que ao invés de vc estar chamando umas instância dos seus JInternalFrame, vc esteja chanado uma instância do JInternalFrame básico.
Suponhamos que vc tenha uma classe chamada FrmCadastroCliente…
Basicamente ela estaria assim:
public class FrmCadastroCliente extends JInternalFrame {
// aki vc vai ter a inicialização dos seus componentes
...
}
Quando vc for chamar este JInternalFrame vc tem que fazer assim:
public class FrmMain extends JFrame {
// aki vc chama o JInternalFrame e joga ele dentro de JDesktopPane
...
FrmCadastroCliente frmCadastroCliente = new FrmCadastroCliente();
desktopPane.add(frmCadastroCliente);
...
}
:arrow: Ontem mandei um exemplo de JInternalFrame, dei uma alterada pra ver se dá uma luz pra vc…
Um abraço…
Classe do form Principal
[code]import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.beans.PropertyVetoException;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
/**
-
Exemplo aplicação MDI
-
@arquivo FrmMain.java
-
@author 01/12/2004 10:03:26 - Rodrigo G. Tavares de Souza [black_fire]
*/
public class FrmMain extends JFrame {
/**
- Método que será executado quando o menu
- for clicado, que neste caso será gerado
- um novo frame MDI Cadastro e será exibido
- no JDesktopPane.
-
@param e Recebe o evento
*/
private void mnCadastroPerformed(ActionEvent e) {
FrmCadCliente frmCadCliente = new FrmCadCliente(
“Novo Cadastro #”+ String.valueOf(nrCad++),
true, //resizable
true, //closable
true, //maximizable
true //iconifiable
);
// Ajusta formulário para o tamanho dos componentes
frmCadCliente.pack();
// Qual procedimento será executado ao fechar o frame
frmCadCliente.setDefaultCloseOperation(JInternalFrame.DISPOSE_ON_CLOSE);
// Deixa o frame visivel
frmCadCliente.setVisible(true);
// Adiciona o frame no DesktopPane
getMdiPane().add(frmCadCliente);
// Posiciona o frame
frmCadCliente.setLocation(fx,fy);
// Incrementa as váriaveis para posicionar os frames em cascata
fx += 10;
fy += 10;
// Tenta enviar o foco para o frame criado
try {
frmCadCliente.setSelected(true);
} catch (PropertyVetoException ex) {}
}
/**
- Método que será executado quando o menu
- for clicado, que neste caso será gerado
- um novo frame MDI e será exibido no
- JDesktopPane.
-
@param e Recebe o evento
/
private void mnNovoPerformed(ActionEvent e) {
/ Veja que aki estou usando a classe base
- porém poderia ser por exemplo um tela sua
- que estivesse extendendo JInternalFrame,
- algo tipo:
- JInternalFrame mdiFrame = new MeuFrameCadastroCliente();
*/
JInternalFrame mdiFrame = new JInternalFrame(
“Novo Frame MDI #”+ String.valueOf(nrForm++),
true, //resizable
true, //closable
true, //maximizable
true //iconifiable
);
// Tamanho do Frame
mdiFrame.setSize(new Dimension(300, 250));
// Qual procedimento será executado ao fechar o frame
mdiFrame.setDefaultCloseOperation(JInternalFrame.DISPOSE_ON_CLOSE);
// Deixa o frame visivel
mdiFrame.setVisible(true);
// Adiciona o frame no DesktopPane
getMdiPane().add(mdiFrame);
// Posiciona o frame
mdiFrame.setLocation(fx,fy);
// Incrementa as váriaveis para posicionar os frames em cascata
fx += 10;
fy += 10;
// Tenta enviar o foco para o frame criado
try {
mdiFrame.setSelected(true);
} catch (PropertyVetoException ex) {}
}
/**
- Adiciona os eventos na aplicação
*/
private void addEvent() {
// Adiciona o evento para o MenuItem [Novo Frame]
mnNovo.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e) {
mnNovoPerformed(e);
}
}
);
// Adiciona o evento para o MenuItem [Novo Cadastro]
mnCadastro.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent e) {
mnCadastroPerformed(e);
}
}
);
}
/**
- Este componente é um container resposável
- por exibir os formulários
-
@return Painel que exibe os formulários MDI
*/
private JDesktopPane getMdiPane() {
if (mdiPane == null) {
mdiPane = new JDesktopPane();
}
return mdiPane;
}
/**
-
Inicalização do menu superior da aplicação.
-
@return Barra de menu Superior
*/
private JMenuBar getMainMenu() {
if (mainMenu == null) {
mainMenu = new JMenuBar();
// Cria o menu superiro
mnPrinc = new JMenu(“Principal”);
mnPrinc.setMnemonic(KeyEvent.VK_P);
// Cria os itens do menu
mnNovo = new JMenuItem(“Novo Frame”);
mnNovo.setMnemonic(KeyEvent.VK_N);
mnCadastro = new JMenuItem("Novo Cadastro");
mnCadastro.setMnemonic(KeyEvent.VK_C);
mnPrinc.add(mnNovo);
mnPrinc.add(mnCadastro);
mainMenu.add(mnPrinc);
}
return mainMenu;
}
/**
- Inicializa componentes do formulários
*/
private void initialize() {
// Seta o layout para BorderLayout
this.getContentPane().setLayout(new BorderLayout());
// Adiciona compomentes no formulário
this.getContentPane().add(getMainMenu(), BorderLayout.NORTH);
this.getContentPane().add(getMdiPane(), BorderLayout.CENTER);
// Adiciona evento que irá criar um novo formulário
addEvent();
// Configura o Frame principal para exibi-lo
this.setSize(new Dimension(640, 480));
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
this.setTitle(“Exemplo Aplicação MDI”);
this.show();
}
/**
- Construtor básico, chama métodos para inicialização
- do componentes do formulário
*/
public FrmMain() {
initialize();
}
public static void main(String[] args) {
JFrame app = new FrmMain();
}
private JMenuBar mainMenu = null;
private JMenu mnPrinc = null;
private JMenuItem mnNovo = null;
private JMenuItem mnCadastro = null;
private JDesktopPane mdiPane = null;
public static int nrForm = 1;
public static int nrCad = 1;
public static int fy = 0;
public static int fx = 0;
}[/code]
Classe do form de Cadastro
[code]import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.GridLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
/**
-
@arquivo FrmCadCliente.java
-
@author 01/12/2004 10:10:14 - Rodrigo G. Tavares de Souza [black_fire]
*/
public class FrmCadCliente extends JInternalFrame {
private JPanel getPnlBottom() {
if (pnlBottom == null) {
btnNovo = new JButton("Novo");
btnAlterar = new JButton("Alterar");
btnExcluir = new JButton("Excluir");
btnGravar = new JButton("Gravar");
pnlBottom = new JPanel();
pnlBottom.add(btnNovo);
pnlBottom.add(btnAlterar);
pnlBottom.add(btnExcluir);
pnlBottom.add(btnGravar);
}
return pnlBottom;
}
private JPanel getPnlMain() {
if (pnlMain == null) {
lblNome = new JLabel("Nome: ");
lblCidade = new JLabel("Cidade: ");
lblUF = new JLabel("UF: ");
lblCPF = new JLabel("CPF: ");
txtNome = new JTextField(20);
txtCidade = new JTextField(20);
txtUF = new JTextField(20);
txtCPF = new JTextField(20);
pnlMain = new JPanel(new GridLayout(4,2));
pnlMain.add(lblNome);
pnlMain.add(txtNome);
pnlMain.add(lblCidade);
pnlMain.add(txtCidade);
pnlMain.add(lblUF);
pnlMain.add(txtUF);
pnlMain.add(lblCPF);
pnlMain.add(txtCPF);
}
return pnlMain;
}
/**
- Inicializa componentes do formulários
*/
private void initialize() {
// Seta o layout para BorderLayout
this.getContentPane().setLayout(new BorderLayout());
// Adiciona compomentes no formulário
this.getContentPane().add(getPnlMain(), BorderLayout.CENTER);
this.getContentPane().add(getPnlBottom(), BorderLayout.SOUTH);
// Configura o Frame principal para exibi-lo
this.setSize(new Dimension(640, 480));
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
this.setTitle(“Exemplo Aplicação MDI”);
this.show();
}
/**
- Construtor básico, chama métodos para inicialização
- do componentes do formulário
*/
public FrmCadCliente() {
super();
initialize();
}
public FrmCadCliente(String title) {
super(title);
initialize();
}
public FrmCadCliente(String title, boolean resizable) {
super(title, resizable);
initialize();
}
public FrmCadCliente(String title, boolean resizable, boolean closable) {
super(title, resizable, closable);
initialize();
}
public FrmCadCliente(String title, boolean resizable, boolean closable,
boolean maximizable) {
super(title, resizable, closable, maximizable);
initialize();
}
public FrmCadCliente(String title, boolean resizable, boolean closable,
boolean maximizable, boolean iconifiable) {
super(title, resizable, closable, maximizable, iconifiable);
initialize();
}
public static void main(String[] args) {
ExemploMdi app = new ExemploMdi();
}
private JPanel pnlBottom = null;
private JPanel pnlMain = null;
private JLabel lblNome = null;
private JLabel lblCidade = null;
private JLabel lblUF = null;
private JLabel lblCPF = null;
private JTextField txtNome = null;
private JTextField txtCidade = null;
private JTextField txtUF = null;
private JTextField txtCPF = null;
private JButton btnGravar = null;
private JButton btnNovo = null;
private JButton btnExcluir = null;
private JButton btnAlterar = null;
}[/code]
Eu queria colocar no meu JDesktop (um form MDI principal com o menu e tal) uma imagem com o logo do sistema…como eu poderia fazer?