"i18n" Atualizar texto das labels

Olá pessoal, estou tentando utilizar o i18n para ter várias línguas. Mas fiquei com algumas dúvidas.
Quando eu crio o meu frame eu devo setar:

jLabel1.setText(messages.getString("texto_label1"));

Devo fazer isso para todas as labels do meu frame?
E caso eu tenha botões que o usuário pressione e selecione outra língua? devo passar o novo text para todas as jLabels manualmente?
É a melhor forma de colocar multilinguas?

Desde já obrigado.

A não ser que esteja utilizando alguma tecnologia de binding, tem que fazer isso mesmo.

Mas nao deveria ser um problema de qualquer forma, dado que normalmente o idioma do usuário é escolhido na tela de login que não deve conter mais que 10 labels.

Olá Filipe Sabella, obrigado por ter respondido!
Meu problema é que tenho três opções de língua e tenho três botões na tela principal, quando o usuário clica em espanhol por exemplo o software deve se ajustar.
Estou fazendo da seguinte forma:

Locale currentLocale; ResourceBundle messages; currentLocale = new Locale("pt", "BR"); messages = ResourceBundle.getBundle("MessagesBundle",currentLocale);

E cada objeto q eu crio eu passo o messages como parâmetro:

lista = new Controle_lista(messages);

ou ainda

jTree1.setCellRenderer(new RenderizarTree(messages));

Será a melhor forma de fazer isso?
Vou ter como atualizar o meu jTree1 quando o usuário selecionar outra língua?