• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Meados

Erro redundante

6 mensagens neste tópico

Boas pessoal, estou a realizar um trabalho no qual estou a implementar a pattern  STATE.

No entanto esta-me a dar um erro quando crio um novo objecto.

public interface Modo {

// Definição das tarefas que o state tem de fazer
public void paint(Graphics g);
public void mouseClicked(MouseEvent e);
public void mouseMoved(MouseEvent e);
}

A interface.

*ERRO: at aplicacao.InserirTorre.<init>(InserirTorre.java:6)

*public class InserirTorre extends BloonsTower implements Modo{

public void paint(Graphics g){
	torreSel.desenharRaioAccao(g);
	torreSel.desenhar( g );

}

public void mouseClicked(MouseEvent e){
	insereTorre( e.getPoint() );
	modo = SELECT_TORRE;

}

public void mouseMoved(MouseEvent e){
	torreSel.setPosicao( e.getPoint() );
}

}

O objecto que implementa a interface.

**protected Modo INSERIR_TORRE = new InserirTorre();

**ERRO: at aplicacao.BloonsTower.<init>(BloonsTower.java:113)

Onde começam os problemas.

O erro que obtenho a criar o objecto inserir torre é o seguinte:

Exception in thread "main" java.lang.StackOverflowError

at javax.swing.plaf.basic.BasicTextAreaUI.propertyChange(Unknown Source)

at javax.swing.plaf.basic.BasicTextUI$UpdateHandler.propertyChange(Unknown Source)

at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source)

at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source)

at java.awt.Component.firePropertyChange(Unknown Source)

at java.awt.Component.setFocusTraversalKeys_NoIDCheck(Unknown Source)

at java.awt.Container.setFocusTraversalKeys(Unknown Source)

at javax.swing.JComponent.setUIProperty(Unknown Source)

at javax.swing.LookAndFeel.installProperty(Unknown Source)

at javax.swing.plaf.basic.BasicTextUI.updateFocusTraversalKeys(Unknown Source)

at javax.swing.plaf.basic.BasicTextAreaUI.propertyChange(Unknown Source)

at javax.swing.plaf.basic.BasicTextUI$UpdateHandler.propertyChange(Unknown Source)

at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source)

at java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source)

at java.awt.Component.firePropertyChange(Unknown Source)

at javax.swing.text.JTextComponent.setEditable(Unknown Source)

at aplicacao.PainelInfo.getDescricaoTA(PainelInfo.java:73)

at aplicacao.PainelInfo.initialize(PainelInfo.java:62)

at aplicacao.PainelInfo.<init>(PainelInfo.java:33)

at aplicacao.BloonsTower.<init>(BloonsTower.java:75)

at aplicacao.InserirTorre.<init>(InserirTorre.java:6)

at aplicacao.BloonsTower.<init>(BloonsTower.java:113)

at aplicacao.InserirTorre.<init>(InserirTorre.java:6)

at aplicacao.BloonsTower.<init>(BloonsTower.java:113)

at aplicacao.InserirTorre.<init>(InserirTorre.java:6)

at aplicacao.BloonsTower.<init>(BloonsTower.java:113)

at aplicacao.InserirTorre.<init>(InserirTorre.java:6)

at aplicacao.BloonsTower.<init>(BloonsTower.java:113)

at aplicacao.InserirTorre.<init>(InserirTorre.java:6)

at aplicacao.BloonsTower.<init>(BloonsTower.java:113)

at aplicacao.InserirTorre.<init>(InserirTorre.java:6)

at aplicacao.BloonsTower.<init>(BloonsTower.java:113)

at aplicacao.InserirTorre.<init>(InserirTorre.java:6)

at aplicacao.BloonsTower.<init>(BloonsTower.java:113)

at aplicacao.InserirTorre.<init>(InserirTorre.java:6)

at aplicacao.BloonsTower.<init>(BloonsTower.java:113)

at aplicacao.InserirTorre.<init>(InserirTorre.java:6)

at aplicacao.BloonsTower.<init>(BloonsTower.java:113)

at aplicacao.InserirTorre.<init>(InserirTorre.java:6)

at aplicacao.BloonsTower.<init>(BloonsTower.java:113)

at aplicacao.InserirTorre.<init>(InserirTorre.java:6)

at aplicacao.BloonsTower.<init>(BloonsTower.java:113)

at aplicacao.InserirTorre.<init>(InserirTorre.java:6)

at aplicacao.BloonsTower.<init>(BloonsTower.java:113)

at aplicacao.InserirTorre.<init>(InserirTorre.java:6)

at aplicacao.BloonsTower.<init>(BloonsTower.java:113)

at aplicacao.InserirTorre.<init>(InserirTorre.java:6)

at aplicacao.BloonsTower.<init>(BloonsTower.java:113)

at aplicacao.InserirTorre.<init>(InserirTorre.java:6)

at aplicacao.BloonsTower.<init>(BloonsTower.java:113)

at aplicacao.InserirTorre.<init>(InserirTorre.java:6)

at aplicacao.BloonsTower.<init>(BloonsTower.java:113)

at aplicacao.InserirTorre.<init>(InserirTorre.java:6)

at aplicacao.BloonsTower.<init>(BloonsTower.java:113)

at aplicacao.InserirTorre.<init>(InserirTorre.java:6)

at aplicacao.BloonsTower.<init>(BloonsTower.java:113)

at aplicacao.InserirTorre.<init>(InserirTorre.java:6)

at aplicacao.BloonsTower.<init>(BloonsTower.java:113)

at aplicacao.InserirTorre.<init>(InserirTorre.java:6)

at aplicacao.BloonsTower.<init>(BloonsTower.java:113)

at aplicacao.InserirTorre.<init>(InserirTorre.java:6)

at aplicacao.BloonsTower.<init>(BloonsTower.java:113)

at aplicacao.InserirTorre.<init>(InserirTorre.java:6)

at aplicacao.BloonsTower.<init>(BloonsTower.java:113)

at aplicacao.InserirTorre.<init>(InserirTorre.java:6)

at aplicacao.BloonsTower.<init>(BloonsTower.java:113)

at aplicacao.InserirTorre.<init>(InserirTorre.java:6)

at aplicacao.BloonsTower.<init>(BloonsTower.java:113)

at aplicacao.InserirTorre.<init>(InserirTorre.java:6)

at aplicacao.BloonsTower.<init>(BloonsTower.java:113)

at aplicacao.InserirTorre.<init>(InserirTorre.java:6)

at aplicacao.BloonsTower.<init>(BloonsTower.java:113)

at aplicacao.InserirTorre.<init>(InserirTorre.java:6)

at aplicacao.BloonsTower.<init>(BloonsTower.java:113)

at aplicacao.InserirTorre.<init>(InserirTorre.java:6)

at aplicacao.BloonsTower.<init>(BloonsTower.java:113)

at aplicacao.InserirTorre.<init>(InserirTorre.java:6)

at aplicacao.BloonsTower.<init>(BloonsTower.java:113)

at aplicacao.InserirTorre.<init>(InserirTorre.java:6)

at aplicacao.BloonsTower.<init>(BloonsTower.java:113)

at aplicacao.InserirTorre.<init>(InserirTorre.java:6)

at aplicacao.BloonsTower.<init>(BloonsTower.java:113)

at aplicacao.InserirTorre.<init>(InserirTorre.java:6)

(e assim por adiante...)

Se alguém me souber indicar o que está a causar o problema e como resolver agradecia imenso.

Obrigado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

StackOverflow é um erro de consumo de memória, possivelmente um método que está a usar recursividade de algum modo.

Pela repetição do erro parece-me que o problema estará no construtor da classe InserirTorre ou do BloonsTorre, podes colocar os construtores ou métodos que contenham as linhas 113 e 6 como está indicado nos erros?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Aquilo que estás a mostrar não é muito útil, está a dar erro num construtor que não está aqui colocado, além disso não estão identificadas as linhas.

Faz um debug do código e verifica qual o método que está a ser chamado de forma recursiva, identificas logo o teu problema.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Aquilo que estás a mostrar não é muito útil, está a dar erro num construtor que não está aqui colocado, além disso não estão identificadas as linhas.

Mas ao não colocar construtor o java não cria um por defeito?

As linhas 6 e 113 já identifiquei é necessário coloca-las todas?

Faz um debug do código e verifica qual o método que está a ser chamado de forma recursiva, identificas logo o teu problema.

Ao fazer debug ele não sai do "protected Modo INSERIR_TORRE = new InserirTorre();".

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas ao não colocar construtor o java não cria um por defeito?

Se quiseremos ser mesmo correctos, não, não cria um.

Ao fazer debug ele não sai do "protected Modo INSERIR_TORRE = new InserirTorre();".

Se não sai, é porque está a criar, recursivamente, o objecto, está a entrar no construtor e a executar algum código de iniciação que usa toda a memória da pilha. Se, com o debugger, acederes ao construtor o que é que tens?

Verifica o construtor das superclasses também porque podem estar a ser invocados.

Só o código que tens aqui não diz nada e é complicado estar a tentar adivinhar o que se passa com o resto do código, tens de verificar porque razão o construtor está a ser chamado recursivamente, parece que estás a chamar um construtor dentro de outro sucessivamente.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora