es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Añadir elementos de swing jbutton a un array en Java.

Estoy trabajando en una aplicación de mensajería. La interfaz gráfica de usuario (GUI) está escrita en Java Swing. Cuando el cliente se inicia, solicita a mi servidor los chats en los que está involucrado un usuario específico. El servidor los enviará en forma de una matriz de cadenas por ejemplo: {RUTA_DEL_CHAT, RUTA_DEL_CHAT}.

Una vez que el cliente recibe esto, lo pasa a mi clase GUI, la cual se supone que debe mostrar cada nombre de chat en la lista (filtraré el resto de la ruta) en la pantalla de arriba hacia abajo. Aquí es donde está mi problema. Comienzo creando una lista de JButton:

JButton[] chat_names = {};

Luego, recorro en bucle la lista de chats (chatdata) y agrego a mi lista de nombres de chat un nuevo JButton para cada nombre de chat. Así:

for (int x=0; x<chat_data.length-1; x++){
    chat_names[x] = new JButton(chat_data[x]);
    chat_names[x].setBounds(100,100,100,100);
}

for (int x=0; x<chat_names.length; x++){
    frame.add(chat_names[x]);
}

Cuando hago esto, obtengo el siguiente error de sintaxis:

Exception in thread "main" 
java.lang.ArrayIndexOutOfBoundsException: Index 0 fuera de límites 
para longitud 0
en gui_main.menu_screen(gui_main.java:16)
en Main.main(Main.java:89)

¿Alguien sabe si esto se puede solucionar o si hay otra manera de mostrar una lista de botones cada uno con un chat_name en ellos?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El problema aquí es que has inicializado tu array chat_names con un tamaño de 0 y luego intentas añadir elementos sin redimensionarlo.

    Para solucionar esto, puedes cambiar la inicialización a:

    JButton[] chat_names = new JButton[chat_data.length];
    

    Esto creará un array de objetos JButton con un tamaño igual a la longitud del array chat_data. Luego, puedes recorrer chat_data y añadir un nuevo JButton a chat_names para cada nombre de chat:

    for (int x=0; x<chat_data.length; x++){="" chat_names[x]="new" jbutton(chat_data[x]);="" chat_names[x].setbounds(100,100+(x*50),100,50);="" ajustar="" la="" posición="" y="" delimitar="" el="" tamaño="" de="" cada="" botón="" frame.add(chat_names[x]);="" }="" aquí,="" estamos="" utilizando="" el="" método="" `setbounds`="" para="" establecer="" la="" posición="" y="" el="" tamaño="" de="" cada="" `jbutton`.="" la="" posición="" y="" se="" ajusta="" para="" que="" cada="" botón="" aparezca="" listado="" hacia="" abajo.="" además,="" ten="" en="" cuenta="" que="" en="" tu="" bucle="" inicial,="" la="" condición="" debería="" ser=""></chat_data.length;><chat_data.length` en="" lugar="" de=""></chat_data.length`><chat_data.length-1` para incluir el último nombre de chat en el array. para="" incluir="" el="" último="" nombre="" de="" chat="" en="" el=""></chat_data.length-1` para incluir el último nombre de chat en el array.>
    

Comments are closed.