Porque que não está atualizando a jlabel?

Olá, eu criei uma classe que estende de jdialog que esta assim:
`

package Mainmenu;

import java.awt.Font;
import java.awt.GridLayout;

import javax.swing.ImageIcon;
import javax.swing.JDialog;
import javax.swing.JLabel;

public class CaixaCentro extends JDialog{
JLabel texto = new JLabel(String.valueOf(Indexmenu.slid.getValue()));
Font fonte  = new Font("Comic Sans MS",Font.BOLD,50);
	CaixaCentro(){
		texto.setFont(fonte);
		this.setUndecorated(true);
		this.setCursor(Indexmenu.cursor);
		this.setLocationRelativeTo(null);
		this.add(texto);
		this.pack();
	}
}

`
Então minha intenção é que quando o usuário a partir de outra classe pressionasse o botão menos, a jlabel texto da jdialog diminuísse um número e então na outra classe eu coloquei isso:

`

CaixaCentro c = new CaixaCentro();
 janela.addKeyListener(new KeyAdapter(){
	 public void keyPressed(KeyEvent e){
		 if(e.getKeyCode()==KeyEvent.VK_SUBTRACT){
			 c.setVisible(true);
		     c.texto.setText(String.valueOf(Integer.parseInt(c.texto.getText())-1));
		   }
		 }
 });`

Más a jlabel não está sendo atualizada, alguém pode me explicar porque?

Tente utilizar o SwingUtilities para rodar em uma thread separada.

https://docs.oracle.com/javase/7/docs/api/javax/swing/SwingUtilities.html#invokeLater(java.lang.Runnable)

Rodar o que? A classe que estende de jdialog?

O código que altera o label.

Tipo assim?

`

 CaixaCentro c = new CaixaCentro();
 window.addKeyListener(new KeyAdapter(){
	 public void keyPressed(KeyEvent e){
		 if(e.getKeyCode()==KeyEvent.VK_SUBTRACT){
			 new Thread(new Runnable(){
				public void run(){
					 c.setVisible(true);
				     c.texto.setText(String.valueOf(Integer.parseInt(c.texto.getText())-1));
				}
			 }).start();
		   }
		 }
  });

`

Só que não funciona igual.

O trecho c.setVisible(true); deve ficar fora, ficando apenas o setText dentro do runnable.

Ou apenas tente apenas chamar o setVisible após alterar o label.

Foi falta de atenção minha na parte do setVisible, mais eu fiz e as duas alternativas não adiantaram nada, você tem outra?

Poste então seu código completo para que eu possa analisar,
fiz esse pequeno exemplo para que você possa analisar, não foi necessário utilizar outra thread.

public class Janela extends JDialog {

private JLabel lblLabel;
private JButton btnMudarLabel;

public Janela() {
    getContentPane().add(getLblLabel(), BorderLayout.NORTH);
    getContentPane().add(getBtnMudarLabel(), BorderLayout.SOUTH);
    pack();
}

private JLabel getLblLabel() {
    if (lblLabel == null) {
    	lblLabel = new JLabel("Label");
    }
    return lblLabel;
}

private JButton getBtnMudarLabel() {
    if (btnMudarLabel == null) {
    	btnMudarLabel = new JButton("mudar label");
    	btnMudarLabel.addActionListener(new ActionListener() {
    	    public void actionPerformed(ActionEvent e) {
    	        getLblLabel().setText(getLblLabel().getText() + "1");
    	    }
    	});
    }
    return btnMudarLabel;
}

public static void main(String[] args) {
    Janela janela = new Janela();
    janela.setVisible(true);
}

}

Eu possuo somente uma classe que estende de jframe com um keylistener que deveria exibir por alguns segundos a classe que estende de jdialog com um número a menos, como se fosse o volume do programa, precisa que eu poste o código?