2013-07-15 1 views
0

Я намереваюсь написать программу, где я дам пользователю выбор на выбор из матрицы 8 * 8. Поскольку моя репутация ниже 10, я не могу включить изображение, но будьте уверены, что это просто нормальная матрица 8 * 8. Я планирую визуализировать его в своей программе Java с помощью 8 * 8 = 64 радиокнопок. пользователь может выбирать только одну радиокнопку за раз, поэтому означает, что все 64 кнопки будут одной группы кнопок.Экстренный прослушиватель для нескольких переключателей

Теперь, как я могу управлять слушателями действий? невозможно (действительно утомительно и скучно) настраивать 64 индивидуальных прослушивателя действий для каждой из 64 переключателей. так как все 64 переключателя находятся в одной группе кнопок, есть ли способ, которым я могу настроить только один прослушиватель событий, чтобы проверить, какая кнопка выбрана?

Если какой-либо из моей данной информации неясно, пожалуйста, дайте мне знать :)

PS: Я использую Netbeans инструменты проектирования

+1

* «Есть ли способ, которым я могу настроить только один прослушиватель событий, чтобы проверить, какая кнопка выбрана?» * - Да. Без кода немного сложно дать предложение, но по существу, вы создали бы экземпляр своего ActionListener и установили для каждой кнопки при их создании. – MadProgrammer

+0

* «bcz .. pls» * 1) Пожалуйста, используйте правильное написание для слов типа «ты», «твой» и «пожалуйста». Это облегчает людям понимание и помощь. 2) Пожалуйста, добавьте письмо в верхнем регистре в начале предложений. Также используйте капитал для слова I, аббревиатуры и аббревиатуры, такие как JEE или WAR. Это облегчает людям понимание и помощь. –

+0

@andrewThompson Извините, я новичок :( –

ответ

1

Создать двумерный 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 для всех JRadioButton,

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

Я хочу закодировать свою программу в инструментах проектирования netbeans (для удобства простоты), как я могу интегрировать это в сгенерированный код на netbeans? –

+0

@MDYousufAzad _ для удобства простой конструкции) звучит так, как будто инструмент создает проблему, а не настолько уверенно, за исключением простейших возможных контекстов ;-) – kleopatra

+0

Я думаю, вы правы. теперь я должен сделать все это вручную: @ –

0

Слушатель действие получает прошел ActionEvent. Вы можете сделать один слушатель, привязать его ко всем кнопкам и проверьте источник события с getSource():

void actionPerformed(ActionEvent e) { 
    Object source = e.getSource(); 
    ... 
} 
+0

Вы об этом говорите? 'radioButton.addActionListener (ListenerClass);' если это так, то мне нужно привязать каждый radioButton отдельно, не так ли? нет способа, где я могу сделать это только один раз и воздействовать на все radioButtons. все они связаны кнопкойгруппы, поэтому я предполагаю, что это должно быть выполнимым правильно? –

+0

@MDYousufAzad Да. Вы можете вызвать это для всех кнопок в цикле над 'buttonGroup.getElements() '(или, если вы создаете свои кнопки в цикле, то вы можете сделать это прямо там), но все они могут совместно использовать один и тот же объект-слушатель – kiheru

+0

buttonGroup.getElements() этот метод может пригодиться. tnx –

0

Я думаю, вы реализуете радиокнопок так:

JRadioButton radioButton = new JRadioButton("TEST"); 

Если вы делаете вам необходимо установить ActionListener для каждой из ваших кнопок (например, инициализировать и установить ActionListener в for-loop) с помощью этого оператора:

radioButton.addActionListener(this) (если вы реализуете ActionListener в том же классе)

Наконец вы можете пойти в ваш метод actionPerformed(ActionEvent e) и получить источник с e.getSource, а затем сделать что-то, как если бы еще, чтобы получить право RadioButton:

if(e.getSource == radioButton1) 
{ 
    // Action for RadioButton 1 
} 
else if(e.getSource == radioButton2) 
{ 
    // Action for RadioButton 2 
} 
... 

 Смежные вопросы

  • Нет связанных вопросов^_^