ArrayIndexOutOfBoundsException

Não estou entendendo.
Preciso fazer um array, cada posição do array vai conter os limites de um retangulo (um jLabel).

Alguns itens serao aleatórios, por isso o laço ‘for’, mas segue um resumo do erro num código mais simples:

public class Main {

 
    public static void main(String[] args) {
    
        int n = 0;
        Rectangle arr[] = new Rectangle[n];
        for (int i=0;i<5;i++) {
        JLabel novoLabel = new JLabel();
        novoLabel.setIcon(new ImageIcon("images/myPic.gif"));
        arr[n+1] = novoLabel.getBounds();
        }

    }
}

mas tenho a mensagem de erro ArrayIndexOutOfBounds, porque?
Obrigado.

Opa! acredito que seja no momento que vc instancia o Rectangle

int n = 0; Rectangle arr[] = new Rectangle[n];

o n tá valendo 0, logo o rectangle está com “largura” 0.

acho que é isso!

Aparentemente não, o “n” em questão teria que ser o tamanho do array, o problema é na linha?

        arr[n+1] = novoLabel.getBounds();

mas não sei pq, já que o getBounds funcionaria como um Rectangle.

Obrigado anyway.

[quote=Lenhador de Yggdrasil]Não estou entendendo.
Preciso fazer um array, cada posição do array vai conter os limites de um retangulo (um jLabel).

Alguns itens serao aleatórios, por isso o laço ‘for’, mas segue um resumo do erro num código mais simples:

//...
        int n = 0;
        Rectangle arr[] = new Rectangle[n];
//...

mas tenho a mensagem de erro ArrayIndexOutOfBounds, porque?
Obrigado.[/quote]
Com isso voce esta criando um array de Rectangle com tamanho 0, ou seja é a mesma coisa que voce fazer isso

String array[] = {};

Voce poderia mudar isso:

//...
int n = 0;
Rectangle arr[] = new Rectangle[n];
for(int i = 0; i < 5; i++){
//...

Para

//...
int n = 5;
Rectangle arr[] = new Rectangle[n];
for(int i = 0; i < n; i++){
//...

Agora o array teria 5 posições e não lançaria mais essa exception.

Solved!
Thanks Ameba!

Também descobri que precisava mudar a linha para

arr[i] = novoLabel.getBounds();

Tudo funcionando perfeitamente!