Alteração de dados em ArrayList e colocar objecto a picar

7 respostas
K

Boa tarde, ando a resolver uns exercícios de java e deparei-me com um problema que não sei como remover dados de um arraylist nem colocar um objeto a piscar.

O meu problema é o seguinte:
O utilizador na classe linha introduz os valores (para desenhar uma linha para o ecrã), e eu queria que depois na class desenho pode-se alterar o valor da posicao x por exemplo.

A outra questão é, como consigo por a linha que é desenhada no ecrã a piscar ?

Código class Linha:

public class Linha extends Figura
{
    public Linha(String Nome, String Cor, int x, int y, int xTamanho, int yTamanho)
    {
        super(x,y,Nome,Cor); //chamo o construtor da figura
        this.xTamanho=xTamanho;
        this.yTamanho=yTamanho;
    }

    public void desenha(Canvas canvas)
    {
        canvas.setForegroundColor(Cor.converteCor(getCor()));
        canvas.drawLine(getX(), getY(), getTamanhoX(), getTamanhoY());
    }

}

Código da class Desenho:

import java.util.ArrayList;

public class Desenho
{
   
    private ArrayList<Figura> figuras;
    private Canvas canvas;
    private String nome_objeto;
    private int nova_posicaoX;
    

    public Desenho()
    {
        canvas = new Canvas("Editor Gráfico", 600, 600);        
        canvas.setVisible(true);       
        figuras = new ArrayList<Figura>();
    }
    
    public void desenha()
    {
        for(Figura f : figuras)
        {
            f.desenha(canvas);
        }
    }
    
    public void addFigura(Figura figura)
    {
        figuras.add(figura);
    }
    
    public void lista_objetos()
    {
        System.out.println("Os Objetos Criados foram : ");
        for(Figura f: figuras)
        {
            System.out.println(f);
        }
    }
    
    public void lista_propriedades_objetos()
    {
        System.out.println("As Propriedades dos Objetos Criados foram : ");
        for(Figura f: figuras)
        {
            System.out.println("Nome: " + f.getNome() + " Cor: " + f.getCor() + " Posição x: " + f.getX() + " Posição y: " + f.getY() + " Tamanho no eixo dos x: " + f.getTamanhoX() + " Tamanho no eixo dos y: " + f.getTamanhoY());
        }
    }
    
    public void Objeto_piscar()
    {
       //objecto para piscar
    }
    
    public void Altera(String nome_objeto, int nova_posicaoX)
    {
        this.nome_objeto=nome_objeto;
        for(Figura f: figuras)
        {
            if(f.getNome().equals(nome_objeto))
            {
                this.nova_posicaoX=nova_posicaoX;
                // gostaria de alterar aqui, já tentei com o set mas não consegui
            }
            else
            {
                System.out.println("Não alterou - Verifique se o nome do objeto está correto");
            }
        }
    }
}

Desde já Obrigado :)

7 Respostas

ViniGodoy

Esse canvas é o do AWT? Se for, está completamente errado a forma que você está usando.

Para fazer coisas piscaram ou moverem, é necessário criar um loop de animação. Seria bom você ler esses tutoriais:
http://www.pontov.com.br/site/java/48-java2d

Finalmente, por favor, não marque tópicos com o óbvio, como as tags [Dúvida] e [Ajuda].

K

Não é esse o canvas, o canvas que estou a usar foi o meu professor que editou e forneceu para resolver o exercício, em relação há animação obrigado pelo tutorial vou ler a ver se consigo aplicar.

E em relação a editar no meu arraylist como poderei fazer ?

Coloquei no tópico [ajuda] pq é o que costumo colocar noutros fóruns como pode ter reparado foi a primeira vez que publiquei algo neste fórum pq já há algum tempo que sigo e tem me ajudado em algumas questões de java :slight_smile:

Cumprimentos, kaaps.

ViniGodoy

Quanto ao arrayList, leia:

K

hum, estou a tentar usar o contains mas está a dar-me false ou seja que nao tenho esse valor dentro do arraylist

public void Altera(String nome_objeto)// int nova_posicaoX)
    {
        this.nome_objeto=nome_objeto;
        for(Figura f: figuras)
        {
            if(f.getNome().equals(nome_objeto))
            {
                
                System.out.println("verifica " + figuras.contains(nome_objeto));
            }
            else
            {
                System.out.println("Não alterou - Verifique se o nome do objeto está correto");
            }
        }
    }

o que estou fazer mal ?

ViniGodoy

Você implementou o método equals da classe que está sendo usada no List?

K

sim

ViniGodoy

Mostre-o.

Criado 11 de janeiro de 2013
Ultima resposta 12 de jan. de 2013
Respostas 7
Participantes 2