Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
1 / 1 / 0
Регистрация: 20.10.2017
Сообщений: 14
1

Swing. Добавление ActionListener к кнопке в цикле

20.08.2021, 08:50. Показов 1810. Ответов 1

Author24 — интернет-сервис помощи студентам
Добрый день всем форумчанам. В общем мне нужно отобразить n-ое количество кнопок, с текстом в виде числа, при нажатии на кнопку с цифрой например 14 должно вывестись 14 новых кнопок и так до посинения клацать эти кнопки, пока не надоест. И так проблема в том, что я делаю кнопки циклом и использую темпбаттон. С координатами и текстом проблем нет а вот ActionListener для всех кнопок в итоге остается как и для последней кнопки(Например последней добавлена кнопка с цифрой 13 и на какую бы кнопку не нажать выведется 13 кнопок). Может есть реализация получше моей. Если что-то нужно уточнить задавайте вопросы пишите я буду разъяснять все как можно конкретнее. Также прикладываю ссылку с проектом на гит.

https://github.com/konduktorIvan/swing-homework

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public ArrayList initButtonsArray(int size){
            resetFrame();
            System.out.println("its func init, size" + size);
            x = 200; //сбрасываем изначальное положение
            y = 100; //чтобы при резете не сьезжали кнопки
            if(size!=0){ // проверка, потому что инициализация происходит сначала программы и идея ругается,
                        // что сайз не задан, пока не введен
                Random r = new Random();
                buttonList = new ArrayList();
                buttonList.clear();
            for (int i = 0; i < size; i++) {
                buttonList.add(new JButton());
            }
 
            for (int i = 0; i < size; i++) {
                tempButton = (JButton) buttonList.get(i);
                if (i % 10 == 0) {
                    x += 100;
                    y = 100;
                }
                tempButton.setBounds(x, y += 40, 100, 30);
                tempButton.setText(String.valueOf(r.nextInt(30)));
                tempButton.addActionListener(e -> showSortScreen(initButtonsArray(checkErrors(tempButton.getText()))));
                tempButton.setVisible(false);
                frame.add(tempButton);
            }
                return buttonList;
            }
            return null;
        }
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.08.2021, 08:50
Ответы с готовыми решениями:

Вставка javax.swing.Timer в ActionListener
Доброго времени суток. Имеется вот такой вот кусок кода, но таймер не работает (просто...

SWING, как изменить цвет рамки фокуса на кнопке ?
SWING, как изменить цвет рамки фокуса на активной (в фокусе) кнопке ?

Изменение размера текста (шрифта) на кнопке (на массиве кнопок) swing
подскажите пожалуйста как изменить на кнопке текст а то очень плохо видно

Swing. Во время выполнения программного клика по кнопке (doClick), не отображаются остальные кнопки
Совсем новичок в Swing, возможно не до конца понимаю потоки или еще что-то. В общем, такая проблема...

1
1246 / 858 / 265
Регистрация: 02.04.2009
Сообщений: 3,255
03.09.2021, 13:05 2
Лучший ответ Сообщение было отмечено HateAllPeople как решение

Решение

HateAllPeople,

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
 
public class Window extends JFrame {    
    List<JButton> buttons = new ArrayList<JButton>();
    
    public Window() {
        super.setTitle("Window");        
        this.setSize(250, 400);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        this.getContentPane().setLayout(new FlowLayout(FlowLayout.LEADING, 5, 5));
        this.setLocationRelativeTo(null);
        
        for (int i = 0; i < 10; i++) {
            JButton button = new JButton("Button " + i);
            button.addActionListener(this::buttonClick);
            buttons.add(button);            
            this.getContentPane().add(button);          
        }
        
        this.setVisible(true);
    }
    
    public void buttonClick(ActionEvent e){
        if (buttons.indexOf(e.getSource()) < 5) {
            JOptionPane.showMessageDialog(this, "Button ID < 5");
        }
        else {
            JOptionPane.showMessageDialog(this, "Button ID >= 5");
        }
    }
    
    public static void main(final String[] args) {
        new Window();
    }    
}
0
03.09.2021, 13:05
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.09.2021, 13:05
Помогаю со студенческими работами здесь

Добавление обьекта на панель (Swing)
Добрый день. Есть фрейм на нем панель, на этой панели есть кнопка, при нажатии на которую должна...

Swing Добавление диалогового окна
Доброго времени суток. У меня такой вопрос - создал диалоговое окно JDialog как отдельный класс....

Добавление таблицы и кнопок в Swing
Помогите пожалуйста разобраться. Уже всю голову поломал. Я хочу добавить таблицу с данными из бд и...

Как обратиться к кнопке созданной в цикле?
Здравствуйте, пишу игру &quot;Жизнь&quot;, клетки реализую в виде кнопок, которые создаются в цикле(их 1600)....

Динамическое добавление колонок в JTable Swing
Всем привет) Использовал таблицы и раньше, но сейчас задача требует создания динамических...

JTable, swing, строки, таблицы, Добавление
Здравствуйте нужна помощь не пойму как сделать что бы данные введенные в jTextField записывались в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru