validate()
: No Swing, ao criar um componente, ele não é, valid
ou seja, sua propriedade válida é false
. Um componente é considerado válido quando sua largura, altura, localização e material foram determinados. Isso geralmente é feito chamando seu validate()
método, direta ou indiretamente. Quando chamamos validate()
contêineres, ele validará o contêiner (se for inválido) chamando seu doLayout()
método, que normalmente invocará o LayoutManager
. Agora, cada filho colocado neste contêiner será validado recursivamente, de forma que toda a árvore seja disposta e se torne válida.
revalidate()
: revalidate()
deve ser chamado quando você altera um atributo que afetaria sua largura / altura e repaint () quando você altera um atributo que afetaria sua aparência. Por exemplo, se o seu JFrame
contém um JPanel
, agora em um determinado momento você o removeu JPanel
e inseriu um novo em seu lugar, dependendo do conteúdo do recém-colocado JPanel
, do tamanho dos componentes dentro do JPanel
e dele The CONTAINER
próprio (em virtude do gerenciador de layout usado por ele), alterações. O que o leva ao estado inválido. Portanto, para validar essa mudança, você deve chamar explicitamente revalidate()
.
invalidate()
: Isso é algo que eu nunca usei, então pode não haver muitas informações que eu possa fornecer sobre isso. Mas parece que os cenários apresentados acima podem dar uma pequena dica sobre o que acontece ao usar invalidate()
.
revalidate()
não chamadoLayout()
, o quevalidate()
faz. Portanto, não é realmente uma soma de ambos -revalidate
nem sempre é um substituto válido paravalidate
.