Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

J_Alison

setContentPane não funciona

Recommended Posts

Boa noite pessoal, estou com dificuldades de implementar a classe a seguir, onde tento fazer com que através de um clique em um item do menu, mude o contentpane do frame. As classes FormCliente, FormProduto e FormFornecedor herdam de JPanel e estão no mesmo pacote. O código não apresenta nenhum erro de compilação ou em tempo de execução, mas escrevi-o com a intenção de que quando o usuário clicar em um item do menu, mude o painel de conteúdo, mas não está acontecendo nada. Se alguém puder me dar uma força agradeço muito, ois estou iniciando meus estudos em Java.

CODE
package br.fgf.modelo;

 

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

 

public class Principal implements ActionListener{

 

//Declaração dos atributos da classe

private static Principal princ = new Principal();

private static JFrame frame = new JFrame("Cadastro");

private FormCliente formCli = new FormCliente();

private FormProduto formPro = new FormProduto();

private FormFornecedor formForn = new FormFornecedor();

private JMenuBar menuBar;

private JMenu menu;

private JMenuItem menuItem1;

private JMenuItem menuItem2;

private JMenuItem menuItem3;

private JMenuItem menuItem4;

 

//Configura e retorna uma barra de menus

public JMenuBar createMenuBar() {

menuBar = new JMenuBar();

menu = new JMenu("Menu de Opções");

menuBar.add(menu);

menuItem1 = new JMenuItem("Cadastro de Clientes",KeyEvent.VK_T);

menuItem1.addActionListener(this);

menu.add(menuItem1);

menuItem2 = new JMenuItem("Cadastro de Produtos",KeyEvent.VK_T);

menuItem2.addActionListener(this);

menu.add(menuItem2);

menuItem3 = new JMenuItem("Cadastro de Fornecedores",KeyEvent.VK_T);

menuItem3.addActionListener(this);

menu.add(menuItem3);

menu.addSeparator();

menuItem4 = new JMenuItem("Sair",KeyEvent.VK_T);

menuItem4.addActionListener(this);

menu.add(menuItem4);

return menuBar;

}

 

//Configura e retorna o painel de conteúdo default

public JPanel createContentPane() {

JPanel contentPane = new JPanel(new BorderLayout());

JLabel label = new JLabel("<-----------------------------------------------------------------Escolha uma das Opções do Menu.------------------------------------------------------------------->");

contentPane.add(label);

return contentPane;

}

 

//Configura e retorna o painel de cadastro de clientes

public JPanel createContentPane(FormCliente c) {

return c;

}

 

//Configura e retorna o painel de cadastro de produtos

public JPanel createContentPane(FormProduto p) {

return p;

}

 

//Configura e retorna o painel de cadastro de fornecedores

public JPanel createContentPane(FormFornecedor f) {

return f;

}

 

 

//Escolhe o painel a ser mostrado de acordo com a opção escolhida

public void actionPerformed(ActionEvent e) {

if(e.getSource() == menuItem1){

frame.setContentPane(princ.createContentPane(formCli));

}else if(e.getSource() == menuItem2){

frame.setContentPane(princ.createContentPane(formPro));

}else if(e.getSource() == menuItem3){

frame.setContentPane(princ.createContentPane(formForn));

}else if(e.getSource() == menuItem4){

frame.dispose();

System.exit(0);

}

}

 

//Configura e mostra o frame

private static void createAndShowGUI() {

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setJMenuBar(princ.createMenuBar());

frame.setContentPane(princ.createContentPane());

frame.setSize(750, 460);

frame.setVisible(true);

}

 

 

public static void main(String[] args) {

javax.swing.SwingUtilities.invokeLater(new Runnable() {

public void run() {

createAndShowGUI();

}

});

}

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caso interesse a alguém consegui resolver esse problema com a ajuda de um amigo em outro forum.

 

Basta usar os seguintes métodos:

 

frame.validate();

frame.repaint();

 

 

dentro do método:

 

actionPerformed(ActionEvent e);

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.