Массив JButton и ActionListener - Java

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток! Возникла вот такая проблема я создаю окно и создаю класс в котором есть кнопка и координаты Y и X. Потом создаю 2-й массив который заполняю объектами класса JButtonYX и как бы присваиваю для каждой кнопки координаты в соответствии с индексацией массива. И это все цепляю на наше окно. Так вот, подскажите сделать так что бы при нажатии любой кнопки она с консоль писала свои координаты. Я не могу разобраться как надо реализовать ActionListerner что бы он смог считывать Х и Y с объекта класса JButtonYX.
Листинг программы
  1. import java.awt.GridLayout;
  2. import java.util.ArrayList;
  3. import javax.swing.JButton;
  4. import javax.swing.JFrame;
  5. class JButtonYX {// класс в котором как я предпологаю можно привязать координаты к кнопкам
  6. JButton b;
  7. int y;
  8. int x;
  9. public JButtonYX() {
  10. }
  11. JButtonYX(JButton b1, int y1,int x1) {
  12. this.b=b1;
  13. this.y=y1;
  14. this.x=x1;
  15. }
  16. }
  17. class LayoutForBuutons {// класс в котором заплняется наше окно кнопками
  18. //нужно сюда добавить метод который будет при нажатии на кнопку писать в консоль координаты X Y объекта JButtonYX
  19. ArrayList<ArrayList<JButtonYX>> buttons = new ArrayList<ArrayList<JButtonYX>>();
  20. JFrame frame = new JFrame();
  21. public LayoutForBuutons() {
  22. frame = new JFrame();
  23. frame.setSize(500, 500);
  24. frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  25. frame.setLayout(new GridLayout(10,10));
  26. addButton();
  27. frame.setVisible(true);
  28. }
  29. ArrayList<ArrayList<JButtonYX>> addButton() {
  30. for (int i = 0; i < 10; i++) {
  31. buttons.add(new ArrayList<JButtonYX>());
  32. for (int j = 0; j < 10; j++) {
  33. buttons.get(i).add(new JButtonYX(new JButton(), i, j));
  34. buttons.get(i).get(j).y=i;// присваивает значение y к объекту класса JButtonYX
  35. buttons.get(i).get(j).x=j;// Присваивает x
  36. frame.add(buttons.get(i).get(j).b);// добовляет кнопку на наше окошко
  37. }
  38. }
  39. return buttons;
  40. }
  41. }
  42. public class ActionHelp {
  43. public static void main(String[] args) {
  44. LayoutForBuutons l = new LayoutForBuutons();
  45. }
  46. }

Решение задачи: «Массив JButton и ActionListener»

textual
Листинг программы
  1. package actionhelp;
  2.  
  3. import java.awt.GridLayout;
  4. import java.awt.event.ActionEvent;
  5. import java.awt.event.ActionListener;
  6. import java.util.ArrayList;
  7. import javax.swing.JButton;
  8. import javax.swing.JFrame;
  9.  
  10. class JButtonYX extends JButton {// класс в котором как я предпологаю можно привязать координаты к кнопкам
  11.     int x, y;
  12.  
  13.     JButtonYX(int x,int y) {
  14.         super();
  15.         this.y = y;
  16.         this.x = x;
  17.     }
  18. }
  19.  
  20. class LayoutForBuutons {// класс в котором заплняется наше окно кнопками
  21.     //нужно сюда добавить метод который будет при нажатии на кнопку писать в консоль координаты X Y объекта JButtonYX
  22.     ArrayList<JButtonYX> buttons = new ArrayList<>();
  23.     JFrame frame = new JFrame();
  24.     public LayoutForBuutons() {
  25.         frame = new JFrame();
  26.         frame.setSize(500, 500);
  27.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  28.         frame.setLayout(new GridLayout(10,10));
  29.         this.addButton();
  30.         frame.setVisible(true);
  31.     }
  32.    
  33.     void addButton() {  
  34.        
  35.         for (int i = 0; i < 10; i++) {
  36.             for (int j = i * 10; j < (i + 1) * 10; j++) {
  37.                 this.buttons.add(new JButtonYX(j % 10, i));
  38.                 this.frame.add(this.buttons.get(j));
  39.                 this.buttons.get(j).addActionListener(new ActionListener() {
  40.                     @Override
  41.                     public void actionPerformed(ActionEvent e) {
  42.                         JButtonYX b = (JButtonYX) e.getSource(); //берем объект, на котором произошло событие
  43.                         System.out.println(b.x + " " + b.y);
  44.                     }
  45.                 });
  46.             }      
  47.         }
  48.      
  49.     }
  50.    
  51. }
  52.  
  53. public class ActionHelp {
  54.  
  55.     public static void main(String[] args) {
  56.         LayoutForBuutons l = new LayoutForBuutons();
  57.     }
  58. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.636 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут