Jump to content

[Resolvido] Sobre javaFX


Ekate

Recommended Posts

Boa tarde, gostaria que alguem me desse uma opiniao a respeito do codigo mais abaixo em que encontro um erro do tipo NullPointerException e nao percebo o porquê

public class JogoTab extends GridPane {

private Image[] imagens = new Image[3];
private Label[][]labelTab = new Label[10][5];
private Peca[][] tabuleiro;

public JogoTab() {		
}

public JogoTab(Tabuleiro tab) {

	tabuleiro = tab.getTab();

	imagens[0] = new Image(LinhaInicial.class.getResourceAsStream("../Imagens/macaAmarela.JPG"), 50, 50, false, false);
	imagens[1] = new Image(LinhaInicial.class.getResourceAsStream("../Imagens/macaAzul.JPG"), 50, 50, false, false);
	imagens[2] = new Image(LinhaInicial.class.getResourceAsStream("../Imagens/macaVermelha.JPG"), 50, 50, false, false);

	for (int i = 0; i < 10; i++) {
		for (int j = 0; j < 5; j++) {

			System.out.println(tabuleiro[i][j].getCor()); // tenho a certeza que sao recebidos valores porque estes sao mostrados na consola

			switch (tabuleiro[i][j].getCor()) {
				case 'a':
					labelTab[i][j] = new Label("", new ImageView(imagens[0]));
					break;
				case 'u':
					labelTab[i][j] = new Label("", new ImageView(imagens[1]));
					break;
				case 'e':
					labelTab[i][j] = new Label("", new ImageView(imagens[2]));
					break;
			}

			this.add(labelTab[i][j], j + 1, i + 1); // o erro é referente a esta linha, e nao percebo porquê visto que a labelTab ja foi instanciada diretamente nos atibutos

		}
	}
}
}
Link to comment
Share on other sites

Boas

A unica explicação que encontro é não entrar num case...

Aí a labelTab nunca é inicializada.

mas entao como explicas este codigo funcionar? :/

public class LinhaInicial extends GridPane {

private Image imagens[] = new Image[3];
private Label lista[] = new Label[5];
private Peca[] linha;

public LinhaInicial() {
}

public LinhaInicial(Tabuleiro tabuleiro) {

	linha = tabuleiro.getLinhaInicio();

	imagens[0] = new Image(LinhaInicial.class.getResourceAsStream("../Imagens/macaAmarela.JPG"), 50, 50, false, false);
	imagens[1] = new Image(LinhaInicial.class.getResourceAsStream("../Imagens/macaAzul.JPG"), 50, 50, false, false);
	imagens[2] = new Image(LinhaInicial.class.getResourceAsStream("../Imagens/macaVermelha.JPG"), 50, 50, false, false);

	for (int j = 0; j < 5; j++) {

		switch (linha[j].getCor()) {
			case 'a':
				lista[j] = new Label("", new ImageView(imagens[0]));
				break;
			case 'u':
				lista[j] = new Label("", new ImageView(imagens[1]));
				break;
			case 'e':
				lista[j] = new Label("", new ImageView(imagens[2]));
				break;
		}
		this.add(lista[j], j + 1, 1); // o "1" é pq eu so quero q apresente na linha "1"
	}
}

é isso que eu nao percebo :/

Link to comment
Share on other sites

No construtor o objecto ainda está a ser criado, pelo que diria que não faz muito sentido fazer uma chamada sobre o this. Diria que é daí que o erro aparece. Mesmo que o labelTab[j] seja null, tal não devia originar uma excepção nessa linha (no máximo daria uma excepção dentro do método add).

Se for este o problema, podes colocar o conteúdo do construtor num método de inicialização.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.