прослушиватель действий для нескольких jradiobutton

у меня есть несколько jradiobutton, которые находятся внутри цикла for, и я пытаюсь поместить на него слушателя, и вот что я нашел:

Прослушиватель действий для нескольких переключателей

Создайте двумерный массив JRadioButton, например

    JRadioButton[][] jRadioButtons = new JRadioButton[8][];
    ButtonGroup bg = new ButtonGroup();
    JPanel panel = new JPanel();
    panel.setLayout(new GridLayout(8, 8));
    for (int i = 0; i < 8; i++) {
        for (int j = 0; j < 8; j++) {
            JRadioButton btn = new JRadioButton();
            btn.addActionListener(listener);
            btn.setName("Btn[" + i + "," + j + "]");
            bg.add(btn);
            panel.add(btn);
            // can be used for other operations
            jRadioButtons[i][j] = btn;
        }
    }

Вот один ActionListener для всех JRadioButtons

ActionListener listener = new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        JRadioButton btn = (JRadioButton) e.getSource();
        System.out.println("Selected Button = " + btn.getName());
    }
};

я вроде понимаю, но у меня все еще есть несколько разъяснений:

  1. какова цель двумерного jradiobutton? я имею в виду, я как бы вижу, что это нужно для установки имени для jradiobuttons, но, насколько я понимаю, это только для отображения. да, чтобы подтвердить, что это jradiobutton, который вы выбрали, но я не понимаю, с какой целью он помещает actionlistener
  2. действительно ли двухмерный jradiobutton так необходим?
  3. могу я просто использовать имя jradiobuttons

сделать что-то вроде этого:

if(NameOfJRadioButton.isSelected())

{

//some procedures

}

^ (кажется, я не могу преобразовать это в код:/)

если да, то как я могу это сделать? или у вас есть другие предложения о том, как поставить прослушиватель для нескольких jradiobuttons? спасибо за любое ваше предложение :)


person bruh    schedule 20.10.2016    source источник
comment
is the two dimensional jradiobutton really that necessary? - вы когда-нибудь ссылались на массив где-нибудь в своем коде? i don't get what's the purpose of it in putting actionlistener - если у вас нет цели, то зачем писать ActionListener? Вы пишете ActionListener только в том случае, если хотите что-то сделать, когда пользователь нажимает переключатель.   -  person camickr    schedule 21.10.2016
comment
@camickr о, это не мой код. я только что нашел это в другом сообщении stackoverflow. у меня просто есть несколько разъяснений того, что на самом деле является целью, потому что я, кажется, не понимаю, почему это там, а также спрашиваю, сработает ли моя идея и как   -  person bruh    schedule 21.10.2016


Ответы (1)


Что касается вашего первого и второго пункта, причина двумерного массива неизвестна, поскольку это не ваш код, но он вообще не нужен для использования JRadioButtons. Однако полезно иметь все ваши кнопки в массиве какого-либо типа, будь то список массивов или группа кнопок (список качания для кнопок) для проверки вещей с помощью кнопок при вызове действия. например в вашей 3-й точке этот список массивов позволит вам перебирать и проверять, какие кнопки были выбраны, и действовать соответственно.

Назначение прослушивателя действий — выполнение действия, когда пользователь нажимает кнопку. Наиболее общее использование для этого - сделать так, чтобы пользователю было разрешено выбирать только определенное количество JRadioButtons или отключать их после того, как они были выбраны. например в меню выбора персонажа.

person Kyal Bond    schedule 21.10.2016