Массив JButton и ActionListener - Java
Формулировка задачи:
Доброго времени суток! Возникла вот такая проблема я создаю окно и создаю класс в котором есть кнопка и координаты Y и X. Потом создаю 2-й массив который заполняю объектами класса JButtonYX и как бы присваиваю для каждой кнопки координаты в соответствии с индексацией массива. И это все цепляю на наше окно.
Так вот, подскажите сделать так что бы при нажатии любой кнопки она с консоль писала свои координаты.
Я не могу разобраться как надо реализовать ActionListerner что бы он смог считывать Х и Y с объекта класса JButtonYX.
import java.awt.GridLayout; import java.util.ArrayList; import javax.swing.JButton; import javax.swing.JFrame; class JButtonYX {// класс в котором как я предпологаю можно привязать координаты к кнопкам JButton b; int y; int x; public JButtonYX() { } JButtonYX(JButton b1, int y1,int x1) { this.b=b1; this.y=y1; this.x=x1; } } class LayoutForBuutons {// класс в котором заплняется наше окно кнопками //нужно сюда добавить метод который будет при нажатии на кнопку писать в консоль координаты X Y объекта JButtonYX ArrayList<ArrayList<JButtonYX>> buttons = new ArrayList<ArrayList<JButtonYX>>(); JFrame frame = new JFrame(); public LayoutForBuutons() { frame = new JFrame(); frame.setSize(500, 500); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLayout(new GridLayout(10,10)); addButton(); frame.setVisible(true); } ArrayList<ArrayList<JButtonYX>> addButton() { for (int i = 0; i < 10; i++) { buttons.add(new ArrayList<JButtonYX>()); for (int j = 0; j < 10; j++) { buttons.get(i).add(new JButtonYX(new JButton(), i, j)); buttons.get(i).get(j).y=i;// присваивает значение y к объекту класса JButtonYX buttons.get(i).get(j).x=j;// Присваивает x frame.add(buttons.get(i).get(j).b);// добовляет кнопку на наше окошко } } return buttons; } } public class ActionHelp { public static void main(String[] args) { LayoutForBuutons l = new LayoutForBuutons(); } }
Решение задачи: «Массив JButton и ActionListener»
textual
Листинг программы
package actionhelp; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.ArrayList; import javax.swing.JButton; import javax.swing.JFrame; class JButtonYX extends JButton {// класс в котором как я предпологаю можно привязать координаты к кнопкам int x, y; JButtonYX(int x,int y) { super(); this.y = y; this.x = x; } } class LayoutForBuutons {// класс в котором заплняется наше окно кнопками //нужно сюда добавить метод который будет при нажатии на кнопку писать в консоль координаты X Y объекта JButtonYX ArrayList<JButtonYX> buttons = new ArrayList<>(); JFrame frame = new JFrame(); public LayoutForBuutons() { frame = new JFrame(); frame.setSize(500, 500); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setLayout(new GridLayout(10,10)); this.addButton(); frame.setVisible(true); } void addButton() { for (int i = 0; i < 10; i++) { for (int j = i * 10; j < (i + 1) * 10; j++) { this.buttons.add(new JButtonYX(j % 10, i)); this.frame.add(this.buttons.get(j)); this.buttons.get(j).addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { JButtonYX b = (JButtonYX) e.getSource(); //берем объект, на котором произошло событие System.out.println(b.x + " " + b.y); } }); } } } } public class ActionHelp { public static void main(String[] args) { LayoutForBuutons l = new LayoutForBuutons(); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д