Seguinte galera to tentando fazer um teste simples com ContainerListener mais não funciona, nunca tinha implementado este listener antes se alguem tiver uma sugestão do que estou fazendo de errado agradeço, o código que eu fiz é super simples é um botão que ao ser clicado adiciona um novo painel ao JFrame mais o método componentAdded não é chamado, segue o código:
package edu.univas.cadastro.app;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ContainerEvent;
import java.awt.event.ContainerListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class ContainerTest extends JFrame implements ContainerListener {
private JButton _buttonAdd = null;
public ContainerTest() {
setSize(400, 400);
addContainerListener(this); // adicionado containerListener
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLocationRelativeTo(null);
add(createForm(), BorderLayout.NORTH);
}
private Component createForm() {
JPanel panel = new JPanel(new BorderLayout());
_buttonAdd = new JButton("ADD");
_buttonAdd.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
addTestPanel(); // Evento do botão adiciona novo painel teste
}
});
panel.add(_buttonAdd, BorderLayout.CENTER);
return panel;
}
private void addTestPanel() {
add(createPanelTest(), BorderLayout.CENTER);
validateTree(); // Redesenhar tela
}
private Component createPanelTest() {
JPanel panel = new JPanel(new BorderLayout());
panel.add(new JButton("TEST"), BorderLayout.CENTER);
return panel;
}
@Override
public void componentAdded(ContainerEvent e) {
System.out.println("Adicionou novo container");
}
@Override
public void componentRemoved(ContainerEvent e) {
System.out.println("Removel container");
}
public static void main(String[] args) {
ContainerTest containerTest = new ContainerTest();
containerTest.setVisible(true);
}
}