powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Сетка из JButton: определить текущую
11 сообщений из 11, страница 1 из 1
Сетка из JButton: определить текущую
    #33445052
fplab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть код:
Код: plaintext
1.
2.
3.
4.
5.
        JPanel panel =  new  JPanel ( new  GridLayout ( 9 ,  9 ));
         for  ( int  i =  0 ; i <  81 ; i++) {
            JButton b =  new  JButton ("" + i);
            panel.add (b);
        }
Т.е. рисуется квадрат 9*9 кнопок. Как можно определить текущую кнопку на которой щелкнули мышью ?
...
Рейтинг: 0 / 0
Сетка из JButton: определить текущую
    #33445055
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
  b.addActionListener(new ActionListener() {
     public void actionPerformed(ActionEvent e) {
        JButton b = (JButton) e.getSource();
     }
  });
-----------------------------------
The Bat + My Gate

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Сетка из JButton: определить текущую
    #33445087
fplab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, но событие отрабатывает только на последней кнопке :(
...
Рейтинг: 0 / 0
Сетка из JButton: определить текущую
    #33445107
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а всем ли кнопкам добавляется листнер? или только последней?

-----------------------------------
The Bat + My Gate

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Сетка из JButton: определить текущую
    #33445120
fplab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за наводку. Сделал так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
        JPanel panel =  new  JPanel ( new  GridLayout ( 9 ,  9 ));
         for  ( int  i =  0 ; i <  81 ; i++) {
            b =  new  JButton ();
            b.addActionListener (getButton ());
            panel.add (b);
        }

...

         public  ActionListener getButton () {
             return   new  ActionListener () {
                 public   void  actionPerformed (ActionEvent e) {
                    JButton btn = (JButton) e.getSource ();
                    System.out.println (e.getSource ());
                }
            };
        }
Грязновато, но теперь обработчик событий срабатывает для каждой кнопки. Можно еще вопрос ? А можно ли каким-либо образом получить НОМЕР выбранной кнопки ?
...
Рейтинг: 0 / 0
Сетка из JButton: определить текущую
    #33445137
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я бы сделал так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
ActionListener al = new ActionListener() {
   public void actionPerformed (ActionEvent e) {
      JButton btn = (JButton) e.getSource ();
      System.out.println("Номер: " + btn.getText());
   };
}

for (int i =  0 ; i <  81 ; i++) {
   b =new JButton ();
   b.addActionListener (al);
   panel.add (b);
}

-----------------------------------
The Bat + My Gate

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Сетка из JButton: определить текущую
    #33445150
fplab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это работает, но только в том случае, когда кнопка имеет метку. А если кнопка без метки ?
Спасибо Вам огромное, Вы очень здорово помогли. Через неделю НГ и у меня, видно, мозги клинит :)
...
Рейтинг: 0 / 0
Сетка из JButton: определить текущую
    #33445154
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fplab
Это работает, но только в том случае, когда кнопка имеет метку. А если кнопка без метки ?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public class NumberedButton extends JButton {
   int number =  0 ;

   public int getNumber() {
      return number;
   }
   public void setNumber(int number) {
      this.number = number;
   }
}
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
ActionListener al = new ActionListener() {
   public void actionPerformed (ActionEvent e) {
      NumberedButton btn = (NumberedButton) e.getSource ();
      System.out.println("Номер: " + btn.getNumber());
   };
}
for (int i =  0 ; i <  81 ; i++) {
   NumberedButton b = new NumberedButton ();
   b.setNumber(i);
   b.addActionListener (al);
   panel.add (b);
}




-----------------------------------
The Bat + My Gate

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
Сетка из JButton: определить текущую
    #33445169
fplab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, спасибо еще раз !
Примерно такое я и соорудил, но Ваш код аккуратнее
...
Рейтинг: 0 / 0
Сетка из JButton: определить текущую
    #33446084
fplab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот еще вопрос: допустим, я стою на какой-то кнопке и нажимаю стрелку вниз (текущее положение кнопки позволяет двигаться вниз, т.е кнопка не в самом нижнем ряду). Как мне активизировать кнопку под текущей (из которой я двинулся):
0 1 2 3 4 5 6 7 8

9 10 11 12 13 14 15 16 17

и т.д.
Например, если номер текущей кнопки 0, то номер кнопки под ней: 9.
...
Рейтинг: 0 / 0
Сетка из JButton: определить текущую
    #33446129
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нужно разобраться с классом KeyboardFocusManager и все грамотно
настроить.

-----------------------------------
The Bat + My Gate

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Сетка из JButton: определить текущую
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]