Aonde está o erro?

Salve,

Fiz uma classe JFrame que é comum a diversas chamadas diferentes. Ela exibe apenas um Panel “NORTH” e mais dois botões. Este Panel, é uma outra classe que tem um JComboBox. Estou tentando fazer com que cada itemList faça aparecer uma outra classe Panel no centro deste Frame. Não está aparecendo com a seguinte implementação:

public class Apolice extends SubtelaDefault { /** Classe extendendo JFrame*/
public Apolice() {
initComponents();
}

private void initComponents() {
    JPanelNorth pan = new JPanelNorth();
    getContentPane().add(pan, java.awt.BorderLayout.NORTH);
 }

/** Método para fornecer o serviço de invocação do outro Panel */

public void addPanelDadosApolice() {
    PanelDadosApolice pan = new PanelDadosApolice();
    getContentPane().add(pan, java.awt.BorderLayout.CENTER);
}

-------------------****--------------------------------------------------------------------

public class JPanelNorth extends javax.swing.JPanel {

/** Creates new form JPanelNorth */
public JPanelNorth() {
    initComponents();
}

private void initComponents() {
    jComboBoxModalidade = new javax.swing.JComboBox();
    addModalidade();

    jComboBoxModalidade.addItemListener(new java.awt.event.ItemListener() {
        public void itemStateChanged(java.awt.event.ItemEvent evt) {
            jComboBoxModalidadeItemStateChanged(evt);
        }
    });

    add(jComboBoxModalidade);

}

private void jComboBoxModalidadeItemStateChanged(java.awt.event.ItemEvent evt) {
    Apolice ap = new Apolice();
    if ( jComboBoxModalidade.getSelectedIndex() == 1)
    ap.addPanelDadosApolice();

-------------------------------------------------------**************----------------------------------

Com uma caixa de mensagem funciona com um bug que agora não vem ao caso.

Aonde está o erro?

Obrigado
Dirceu

Olha, esse teu código está muito ruim e confuso, mas pelo que eu entendi tu estás simplesmente adicionando um novo componente no painel. Não sei qual o layout do painel, mas se for um Border ele não sobrescreve. Se for um flow ele vai concatenar, e dependendo do tamanho o negócio pode desaparecer. Tu deverias usar um CardLayout.

Além disso: 

1- Tens certeza de que o evento certo está sendo disparado?
2- Tens certeza de que o item certo do combo está sendo selecionado?

Posta o resto do teu código aqui.

Esse é o problema de estudar sózinho.

Estou fazendo da minha cabeça conforme o que entendi sobre POO. O Frame apólice é comum a varias chamadas e é borderlayout.

  • Quando invoco o método addPanelDadosApolice() da classe Apólice no corpo de initComponents de Apólice, o painel aparece. Portanto o Método funciona.

  • Quando invoco um showMessageDialog qualquer na seleção do ítem desejado, o mesmo aparece . Portanto o evento certo está sendo disparado.

A intenção é fazer com que o novo painel apareça dentro do Frame Apolice logo abaixo do painel já alocado.

Agradeço a crítica sobre o código ruim, pois dessa forma poderei redirecionar-me qto aos meus estudos. Como eu disse, estudar sozinho tem seus inconvenientes.

Vou catar seu mail para colocar o código completo e vc dar sua opinião.

Muito grato por sua atenção.

[ ]
Dirceu