Porque o jLabel.setText não quer funcionar comigo?

3 respostas
tiagomac

Olá pessoal, to escrevendo um código em que um programa se conecta com um banco de dados, usei um jLabel para comunicar a quanto anda essa conexão, porem sempre que mando compilar, apesar do IDE (eclipse) informar não haver erros, quando compilo sempre eu tenho um erro de retorno, o código está assim:

public static void main(String[] args) {
		JFrame.setDefaultLookAndFeelDecorated(true);
		jLabel_error.setText("testando");
o erro que  é justamente nesse jLabel_error.setText(testando);

o compilador me retorna isso:

Exception in thread main java.lang.NullPointerException

at mysql_visual.main(mysql_visual.java:108)

a linha 108 é justamente onde se encontra o jLabel_error.setText…

o jLabel tá declarado assim:

private JLabel jLabel_error(){
		if (jLabel_error == null) {
			jLabel_error = new JLabel();
			jLabel_error.setBounds(new Rectangle(2, 3, 381, 26));
			jLabel_error.setFont(new Font("Dialog", Font.PLAIN, 10));
			jLabel_error.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT);
			jLabel_error.setHorizontalAlignment(SwingConstants.LEFT);
			jLabel_error.setVerticalTextPosition(SwingConstants.TOP);
			jLabel_error.setVerticalAlignment(SwingConstants.TOP);
//			jLabel_error.setText("Label de avisos.");

		}

o que pode estar acontecendo?
o error de NullPointerException é um aviso de que o objeto retorna um valor nulo, correto? mas tentei declarar o jLabel como void para não retornar nada, porem ele não aceita, até pq estou usando metodo de encapsulamento, as chamadas ocorrem em um código mais abaixo onde dou um add pro jLabel aparecer no jPanel.

alguém saberia o que pode estar acontecendo e como resolver? agradeço desde já e um grande abraço.

ah, estou usando o Swing, todo o package inclusive o awt devidamente importados.

3 Respostas

Proteu_Alcebidiano

use

jLabel_error().setText("testando");

:wink:

t+

tiagomac

Cara, não é que foi?
agora me tira uma dúvida, eu vim de pascal e to apanhando com java ainda, eu queria saber o seguinte:
1: o porquê do uso do () depois o jLabel_error?
2: e também porque eu tive que declarar o jlabel como static além de private? quando fiz isso o eclipse retornou o seguinte: Cannot make a static reference to the non-static method jLabel_error() from the type mysql_visual

então eu adicionei o static depois do private e ele rodou :O!
qual a função do static nesse caso?

valeu e um abraço! obrigado por ter me ajudado…

Proteu_Alcebidiano

porque jLabel_error é um metodo.

Em pascal você nao precisa colocar () para invocar um método (ou na linguagem do pascal, uma procedure). Para as linguagens de sintaxe inspiradas na linguagem C, como é o caso de java, o uso de () diferencia um atributo de uma método.

No proprio forum vc encontra essas respostas

t+

Criado 16 de dezembro de 2006
Ultima resposta 16 de dez. de 2006
Respostas 3
Participantes 2