Boa tarde,
estou colocando um arrayList em ordem através do “Collections.sort”… Porém em seguida ja preciso utilizar essa lista atualizada. Mas ela não atualiza a principio, só quando sai do metodo e entra de novo, ai ela ja esta atualizada. Alguem sabe o motivo? Ou como resolver isso?
Posta o código aewww, deve estar faltando alguma atribuição
Posta o código, você pode estar colocando o comando no lugar errado …
Component[] cmpPanel = maeprincipal.getComponents();
for (int i = 0; i < arrayMesas.size() + 1; i++) { //esse arrayMesas é só pra ter controle de item ja adicionados.
if (!arrayMesasControle.contains(cmpPanel[i].getName())) { //aqui ele verifica se o item não existe
arrayControle.add(cmpPanel[i]);
arrayMesasControle.add(cmpPanel[i].getName());
}
Collections.sort(arrayMesasControle);
ordenaMesas((JPanel) cmpPanel[i], arrayMesasControle.indexOf(cmpPanel[i].getName())); // Esse metodo serve pra ordenar as mesas de acordo com o indice delas comparando o nome na lista, para ficarem em ordem.
}
}
Acho que vc ta fazendo a ordenação no lugar errado, não? Teria que ser fora do for.
Pior que não Emerson… Pq se eu tentar ordenar fora do for, ele fara a ordenação só depois que eu precisar usar a ordenação.
Crie as listas (array?) como atributos da classe
final List<String> arrayMesasControle = new LinkedList<>(); // N sei se é String
final List<Component> arrayControle = new LinkedList<>(); // N sei se é Component
// O final antes impede q a lista seja trocada
// se precisar trocar a lista, entao use o clear e o addAll
Antes do loop:
arrayMesasControle.clear();
arrayControle.clear();
Bom, então… consegui fazer dar certo, fiz um metodo fora do laço porem dentro desse novo metodo tbm há um laço, entretando dessa vez deu certo… agora estou com outro problema… os nomes que estou tentando organizar são “mesa1”, “mesa2”… “mesa10”… “mesa21”… etc. até o 28
porem, quando ele organiza… esta fazendo da seguinte forma
mesa1, mesa10, mesa2, mesa20…
no qual o certo deveria ser
mesa1, mesa2, mesa3… mesa10, mesa11, mesa20, mesa23
Mais facil seria trocar o nome das mesas para mesa01, mesa02, …
Pelo que entendi esse ultimo metodo esta considerando e ordenando pela primeira numero, e nao pelo numero em completo
resolvi trocando o nome para 1, 2, 3, 4… porem só no array, pois não da pra colocar nome do componente iniciando por numeros.