ContainerListener

1 resposta
acromo

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);
	}
	
}

1 Resposta

acromo

O galera já foi resolvido ficou desta forma:

getContentPane().addContainerListener(this); // adicionado containerListener
Criado 22 de outubro de 2010
Ultima resposta 22 de out. de 2010
Respostas 1
Participantes 1