Ajuda com o refresh

8 respostas
B

Alguém sabe com dar refresh em JPanel?
Se alguém puder me ajudar desde já agradeço!!

8 Respostas

ViniGodoy

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…

arm.jr

seuPainel.repaint();

ViniGodoy

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.

Java_Vinicius_Machin

Nesse caso somente se ele tiver sobrescrito paint(Graphics g). Dado que paint é somente um método hook. :smiley:

API:

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.

:wink:

B

Valew pessoal muito obrigado!! :wink:

neohacker

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á

:slight_smile:

Java_Vinicius_Machin

Postar o código ajuda. :wink:

neohacker

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:

Criado 19 de abril de 2007
Ultima resposta 19 de abr. de 2007
Respostas 8
Participantes 5