Search code examples
javaswingjframejradiobutton

Radio buttons don't show


I am trying to make survey in java. I have 20 questions and 5 possible choices. I was thinking of making 20 labels and 100 radio buttons grouped by 5.

I managed to manually add labels using the Net beans GUI, but I wanted to generate buttons, but they don't show. Here is my code:

public class Prikaz extends javax.swing.JFrame {

    /**
     * Creates new form Prikaz
     */
    public Prikaz() {
        initComponents();
        javax.swing.JRadioButton [][] buttons = new javax.swing.JRadioButton [20][5];
        ButtonGroup [] bg = new ButtonGroup[20];


        for (int i = 0; i < 20; ++i) {
            bg[i]= new ButtonGroup();
            for (int j = 0; j < 5; ++j) {
                buttons[i][j] = new javax.swing.JRadioButton();
                if(j==0)buttons[i][j].setSelected(true);
                buttons[i][j].setLocation(1014+(j*24) , 44+(i*31));
                buttons[i][j].setToolTipText(((Integer)(j+1)).toString());
                buttons[i][j].setVisible(true);
                buttons[i][j].setEnabled(true);
                bg[i].add(buttons[i][j]);
            }
        }

    }

    // Variables declaration - do not modify                     
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel10;
    private javax.swing.JLabel jLabel11;
    private javax.swing.JLabel jLabel12;
    private javax.swing.JLabel jLabel13;
    private javax.swing.JLabel jLabel14;
    private javax.swing.JLabel jLabel15;
    private javax.swing.JLabel jLabel16;
    private javax.swing.JLabel jLabel17;
    private javax.swing.JLabel jLabel18;
    private javax.swing.JLabel jLabel19;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel20;
    private javax.swing.JLabel jLabel21;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel5;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JLabel jLabel7;
    private javax.swing.JLabel jLabel8;
    private javax.swing.JLabel jLabel9;
    // End of variables declaration                   
}

Solution

  • You need to add the buttons to the parent component in addition to the ButtonGroup.

    For example, to add the button to jlabel1, add this after creating the button:

    jlabel1.add(buttons[i][j]);

    Edit: If it doesn't work, first do jLabel.setLayout(new FlowLayout()) for each JLabel, then add new button.