Массив 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();
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д