0

Estoy realizando un programa con JRadioButton. Tengo un arreglo de JRadioButton y a cada botón le quiero asignar un nombre que va a tomar de un arreglo de String. Lo estoy realizando con dos ciclos for. Uno que recorre el arreglo de los botones y otro que recorre el arreglo de los String. Pero me da una excepción java.lang.NullPointerException. No sé qué estoy haciendo mal. Dejo lo que llevo:

    public class Radio_But {

        private String[] carreras;
        private ButtonGroup[] grupoD;
    }
    public Radio_But() {
        carreras = new String[5];
        opciones = new JRadioButton[5];
    }
    public void atributos() {

        String[] carreras = {"Sistemas", "Industrial", "Logistica", "Gestion", "Tics"};
        for (int i = 0; i < opciones.length; i++) {
            for (int j = 0; j < carreras.length; j++) {
                opciones[i].setText(carreras[j]);
            }
        }
SuperG280
  • 1,889
  • 7
  • 14
  • ¿Responde [esto](https://es.stackoverflow.com/questions/42977/cu%c3%a1l-es-la-soluci%c3%b3n-a-todos-los-errores-nullpointerexception-presentes-pasados) a tu pregunta? – BetaM Feb 26 '20 at 03:53

2 Answers2

1

cuando haces new JRadioButton[5]; solo estas creando el arreglo pero esta vacío trata de llenarlo antes de entrar a tu for o mejor quita tu for y pon este para llenar las opciones con las carreras

String[] carreras = {"Sistemas", "Industrial", "Logistica", "Gestion", "Tics"};
        for (int i = 0; i < carreras.length; i++) {
            opciones[i] = new JRadioButton(carreras[i]);    
        }
Jorge Luis
  • 987
  • 4
  • 13
1

Tu primer problema es la longitud del arreglo, dado que arreglo de longitud 5, hace un indexado de 0 a 4 campos.

String[] carreras = {"Sistemas", "Industrial", "Logistica", "Gestion", "Tics"};
System.out.print(carreas[0]); // sistemas
System.out.print(carreas[4]); // Tics

Por lo tanto tu ciclo for debe ir de 0 a carreras.length-1, además no es necesario el doble ciclo for para lograr lo que deseas, dado que carreras[0] debe ir contenido en opciones[0] osea la misma posición. (el mismo valor en i)

public class Radio_But {
    private String[] carreras;
    private ButtonGroup[] grupoD;
    private int max_opciones = 5;

  public Radio_But() {
    carreras = new String[max_opciones ];
    opciones = new JRadioButton[max_opciones ];
  }

  public void atributos() {
    String[] carreras = {"Sistemas", "Industrial", "Logistica", "Gestion", "Tics"};
    for (int i = 0; i < opciones.length; i++) {
        // crear boton y asignar texto
        JRadioButton el_boton=new JRadioButton(carreas[i]);
        // la posición en la pantalla
        el_boton.setBounds(10,i*30,100,24); 
        // agregar a opciones 
        opciones[i] = el_boton;
    }
  }
Diego Mesa
  • 1,539
  • 3
  • 10
  • Diego Mesa disculpa hice lo que me recomendaste que es darle una longitu de 5 a mis arreglos de carreras y opciones y dejar solamente un for pero me sigue dando el mismo error – Emmanuel Herrera Feb 26 '20 at 04:15
  • Debes recordar llenar con `Valores` a tus array de `opciones`, asi como dices `carreras = {"", "",""}` debes meter objetos de tipo `JRadioButton` en opciones. ( favor comenta si ese no el problema) – Diego Mesa Feb 26 '20 at 04:18
  • una pegunta como meto esos objetos de tipo JRadioButton en opciones no logro entender esa parte – Emmanuel Herrera Feb 26 '20 at 04:24
  • Existen dos formas, pero primero ¿esta usando un editor de codigo https://netbeans.org/ o https://www.eclipse.org/? , o ¿esta programando en algun otro editor? – Diego Mesa Feb 26 '20 at 04:28
  • estoy usando netbeans.org – Emmanuel Herrera Feb 26 '20 at 04:29
  • He actualizado el codigo, pero te recomiendo seguir este tutorial para aclarar mejor tus dudas https://www.tutorialesprogramacionya.com/javaya/detalleconcepto.php?codigo=112&punto=&inicio=20 – Diego Mesa Feb 26 '20 at 04:38
  • y si requieras obtener valor por evento click https://stackoverflow.com/questions/6883604/listening-on-buttongroup-for-child-changes-and-print-selected-jradiobuttons. – Diego Mesa Feb 26 '20 at 04:41