Alguém sabe com dar refresh em JPanel?
Se alguém puder me ajudar desde já agradeço!!
Ajuda com o refresh
8 Respostas
seuPanel.validate();
Pode ser chamado uma só vez, depois de adicionar todos os novos componentes no seu painel.
Só uma dica… isso está escrito explicitamente no Javadoc do método add do JPanel…
seuPainel.repaint();
Isto também é possível, mas a chamada ao validate() geralmente é uma opção melhor pois alguns componentes conseguem identificar quais foram as areas alteradas e repintar somente essas áreas, causando uma melhora na performance. Já chamar repaint() dessa forma irá repintar o componente inteiro.
Claro, isso só é problema se você tiver um painel muito carregado, for dar refresh em vários componentes ou estiver rodando numa máquina muito lenta.
E também, vai do componente ser inteligente o suficiente para o validade() repintar só a área específica e não chamar repaint() direto.
Nesse caso somente se ele tiver sobrescrito paint(Graphics g). Dado que paint é somente um método hook. 
Invoked by Swing to draw components. Applications should not invoke paint directly, but should instead use the repaint method to schedule the component for redrawing.
This method actually delegates the work of painting to three protected methods: paintComponent, paintBorder, and paintChildren. They’re called in the order listed to ensure that children appear on top of component itself. Generally speaking, the component and its children should not paint in the insets area allocated to the border. Subclasses can just override this method, as always. A subclass that just wants to specialize the UI (look and feel) delegate’s paint method should just override paintComponent.

Valew pessoal muito obrigado!! 
eu tenho uma dúvida pessoal…
assim eu criei uma aplicação de cálculo numérico com um JMenu e a aplicação possui 3 línguas
quando vc da new ele cria um JPanel no centro soh q se vc alterar a língua depois disso o q ja foi criado no centro não muda…
alguem sabe como posso fazer isso…eu num conheço repaint ou validate
Obs: eu não possuo o código aki (to no trampo), mas vo tentar fazer algo parecido pra q vcs possam me ajudar
vlw pela colaboração desde já

Postar o código ajuda. 
ta na mão galera… começando . . . .
estes 2 métodos estão em na minha tela principal, são itens de 2 menus
o 1º criará um painel dentro de um JFrame
o 2º altera a língua do meu sistema
o que se passa é que após criar o painel, se eu mudar a língua do sistema os painel não muda, mas todos os meunus mudam
private JMenuItem getNumericoMenuItem() {
if (numericoMenuItem == null) {
numericoMenuItem = new JMenuItem();
numericoMenuItem.addActionListener(new .event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
jFrame.add(getPnlNew().add(new Metodo()),BorderLayout.CENTER);
getJFrame(); }
});
} // if
numericoMenuItem.setText(Messages.getString"Language.21"));
return numericoMenuItem;
.
.
.
private JCheckBoxMenuItem getCbPortuguese() {
if (cbPortuguese == null) {
cbPortuguese = new JCheckBoxMenuItem();
cbPortuguese.setIcon(new ImageIcon(getClass().getResource("/Brasil.jpg"))); // Generated
cbPortuguese.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent e) {
Messages.setLanguage("pt");
getJFrame();
}
});
} // if
cbPortuguese.setText(Messages.getString("Language.4")); // Generated
return cbPortuguese;
} // getCbPortuguese
Obs: Sei q ainda esta confuso, mas se der tempo a noite vou postar atá o programa aki no GUJ pra galera ver, mas enquanto isso se alguém conseguir me ajudar…ja vou agradecendo
:thumbup: