NEMESISaka Posted September 19, 2013 at 08:09 PM Report #525232 Posted September 19, 2013 at 08:09 PM 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|
nelsonr Posted September 19, 2013 at 08:45 PM Report #525238 Posted September 19, 2013 at 08:45 PM (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 1 Report
NEMESISaka Posted September 19, 2013 at 09:10 PM Author Report #525243 Posted September 19, 2013 at 09:10 PM É isso mesmo, obrigado 🙂 Tem sido Java toda a semana que já nem consigo pensar direito :\ Obrigado pela dica 🙂
Baderous Posted September 22, 2013 at 10:40 AM Report #525473 Posted September 22, 2013 at 10:40 AM 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
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now