Jump to content
Sign in to follow this  
NEMESISaka

[Resolvido] elemento anterior no foreach

Recommended Posts

NEMESISaka

Boas... gostaria de saber se há possibilidades de capturar alguma informação do elemento anterior numa lista foreach...

para dar um exemplo vou deixar um pedaço de código do que estou a fazer...

Thread t = new Thread() {
  public void run(){
	  while(true){
		  for(JLabel lb:labels){
			  lb.setLocation(lb.getLocation().x -3, 0);
			  int tamanho = lb.getWidth();
			  int localizacao = lb.getLocation().x;
			  if (localizacao + tamanho == 0){
				// apanhar a localizaçao do ultimo elemento e passa-lo para o fim da fila
			  }
		  }
		  try {
			  SwingUtilities.invokeAndWait(running);
			  sleep(30);
		  } catch (InterruptedException ex) {
			  Logger.getLogger(MyPanel.class.getName()).log(Level.SEVERE, null, ex);
		  } catch (InvocationTargetException ex) {
			  Logger.getLogger(MyPanel.class.getName()).log(Level.SEVERE, null, ex);
		  }

	  }
  }
  };
		  t.start();

como diz no comentário, eu quero apanhar a localização da ultima lable no painel e passar a label que já saiu do ecrã para o fim da fila.... se alguém souber de algo agradeço desde já...

Obrigado a todos|

Share this post


Link to post
Share on other sites
nelsonr

(Nao uso Java, por isso pode não se aplicar)

Porque é que nao guardas o ultimo elemento?

Defines uma variavel ca fora que de inicio fica a null.

Antes de terminar o for, guardas a variavel com o objecto atual do ciclo.

Ai nesse sitio, comparas a variavel com null. Se for null é porque estas no primeiro elemento, e não tem elemento anterior.

Se nao for null, usas esse objecto, já que representa o elemento anterior

  • Vote 1

Share this post


Link to post
Share on other sites
NEMESISaka

É isso mesmo, obrigado :)

Tem sido Java toda a semana que já nem consigo pensar direito :\

Obrigado pela dica :)

Share this post


Link to post
Share on other sites
Baderous

Se tiveres uma List<JLabel>, podes usar o método listIterator para obter um ListIterator<JLabel>, que tem o método previous(), que te permite aceder ao último elemento iterado.

ListIterator<JLabel> listIt = labels.listIterator();
while (listIt.hasNext()) {
       JLabel jLabel = listIt.next();
       ...
       if (localizacao + tamanho == 0) {
               JLabel prev = listIt.previous();
               ...
       }
}

http://docs.oracle.com/javase/6/docs/api/java/util/ListIterator.html

Share this post


Link to post
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
Sign in to follow this  

×
×
  • 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.