Jump to content

Erro redundante


Meados

Recommended Posts

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.

Link to comment
Share on other 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?

Link to comment
Share on other 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();".

Link to comment
Share on other 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.

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.