Criar um Componente que estends component

Ola!

eu estou tentando criar um componente gráfico para o meu projeto até criei mas me estou com um problema

esse componente nada mais é do que um JTextField e logo abaixo um JList para quando o usuário for digitando no JTextField ele ir filtrando o JList

para fazer primeiramente eu criei uma class que estende JPanel e fiz “tudo certo” como eu queria

só que extender JPanel não é uma boa ideia pois o componente ficara com métodos como add, setLayout… e isso eu não desejo, dai tive a ideia de estender Component só que não faço ideia de como adicionar o JTextField e o JList nesse componente, pensei em reescrever o método paint e chamar nele o paint do JPanel no qual coloquei o JTextField e o JList mas isso não funcionou! e também tentei reescrever TODOS os métodos de Componet e neles chamar o respectivo do JPanel e também não funcionou!!!

alguém tem alguma ideia??

aguardo respostas e agradeço desde já! até!

Qual o motivo de querer complicar tanto? Só para não ter os métodos de JPanel expostos?
Faça seguindo sua abordagem de estender JPanel e configurar os componentes.

[]'s

é na verdade é sé pra não ter os métodos expostos e adquirir conhecimento, pois nesse caso que só eu estou desenvolvendo não da nada mas se é um componente pra distribuir ou pra outra parte de uma equipe usar ficaria ruim ter que sai dizendo que alguns métodos não e pra ser usado pois pelo menos eu quando vejo um método acho que ele faz alguma coisa e se ele é publico da a entender que é pra todos usarem concordas?

mas se é MUITO COMPLICADO (pois tenho quase certeza que é possível) deixo pra aprender isso depois mas qualquer dica de como fazer é muito bem vinda!

e sobre continuar estendendo JPanel acho que não vou fazer isso vou estender Container que acho que fica mais “limpo” embora não seja um Container e sim um Component

obrigado e caso eu encontre um jeito eu coloco aqui!

Os métodos add, setLayout, vem de Container, e JComponent estende Container, logo JLabel, JTextField, JPanel e os outros JComponents também possuem o método add, setLayout. E por cultura nem tentamos usá-los. Só não sei se tem algum mecanismo que trate a tentativa de utilizá-los.

Não sei se vai dar certo, mas você pode tentar adicionar o JList em um JPopupMenu e setar no text field com o método setComponentPopupMenu. Só não sei se como vai ficar a parte de acionar o popup pela variação no texto, pois este método seta o popup que aparece automaticamente quando se clica com o botão direito do mouse no componente.

Agora o que acho mais viável é pesquisar sobre os componentes que já tem esta função de auto complete implementada: http://www.guj.com.br/java/100120-autocomplete-swingx#539960

Bom essas são só algumas ideias.

bom minha escolha por fazer um JList junto com um JTextField não é bem um auto complete é mais um filtro pois pretendo exibir todos os os itens de uma tabela do banco nesse Jlist e ao clicar mostrar os detalhes ao lado e o JTextField servira pra simular uma pesquisa no banco podendo até usar coringas como ? e *

é acho que vou parar de esquentar a cabeça pois como você disse todos (eu acho) do pacote swing tem esses métodos e eu nem tinha percebido eles nos objetos do tipo JTextField, JButton … (só tinha me ligado desses métodos no JLabel que já tive que usar)

até!