Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2016, 09:16   #1
~Paradox~
Новичок
Джуниор
 
Регистрация: 06.05.2016
Сообщений: 2
По умолчанию Swing - Слушатели в Java, как создать 1 слушатель для всех этих кнопок и оптимизировать код?

Ребят, кто знает помогите. Только начал изучать Swing и не могу разобраться вот с чем, у меня есть код:
Код:
public class Action
{
    
    Action(JButton [] buttons, JTextField field, JFrame frame)
    {
         buttons[1].addActionListener(new ActionListener() 
        {
            @Override
            public void actionPerformed(ActionEvent e) 
            {              
            field.setText(field.getText() + "1");
            }
           
        });
        buttons[2].addActionListener(new ActionListener() 
        {
            @Override
            public void actionPerformed(ActionEvent e) 
            {              
            field.setText(field.getText() + "2");
            }
           
        });
        buttons[3].addActionListener(new ActionListener() 
        {
            @Override
            public void actionPerformed(ActionEvent e) 
            {              
            field.setText(field.getText() + "3");
            }
           
        });
        buttons[4].addActionListener(new ActionListener() 
        {
            @Override
            public void actionPerformed(ActionEvent e) 
            {              
            field.setText(field.getText() + "4");
            }
           
        });
        buttons[5].addActionListener(new ActionListener() 
        {
            @Override
            public void actionPerformed(ActionEvent e) 
            {              
            field.setText(field.getText() + "5");
            }
           
        });
        buttons[6].addActionListener(new ActionListener() 
        {
            @Override
            public void actionPerformed(ActionEvent e) 
            {              
            field.setText(field.getText() + "6");
            }
           
        });
        buttons[7].addActionListener(new ActionListener() 
        {
            @Override
            public void actionPerformed(ActionEvent e) 
            {              
            field.setText(field.getText() + "7");
            }   
        });
        buttons[8].addActionListener(new ActionListener() 
        {
            @Override
            public void actionPerformed(ActionEvent e) 
            {              
            field.setText(field.getText() + "8");
            }
           
        });       
        buttons[9].addActionListener(new ActionListener() 
        {
            @Override
            public void actionPerformed(ActionEvent e) 
            {              
            field.setText(field.getText() + "9");
            }
           
        });
        
    }
Так вот вопрос, по мне кажется что создавать слушателя для каждой отдельной кнопки это глупо, как создать 1 слушатель для всех этих кнопок и оптимизировать код?

______________________
Используйте тег [CODE] (кнопка с решеткой # в форме сообщения) при вставке кода на форум.

Последний раз редактировалось ~Paradox~; 06.05.2016 в 09:18.
~Paradox~ вне форума Ответить с цитированием
Старый 06.05.2016, 09:25   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Просто сделать цикл (for) по buttons и заменить числа на переменную цикла (i).

Если не хочется создавать отдельный анонимный класс для каждой кнопки, то можно создать обычный класс реализующий ActionListener и принимающий число (и field) в конструкторе, а в цикле создавать экземпляры этого класса.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 06.05.2016, 09:50   #3
~Paradox~
Новичок
Джуниор
 
Регистрация: 06.05.2016
Сообщений: 2
По умолчанию

Точно, спасибо, что - то я маленько поплыл, думал по началу что каждый слушатель типо switch, если 1 выполнится то другие уже нет)Спасибо за быстрый ответ)
~Paradox~ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как через Java Swing прописать на кнопку открывание папки lubasha9191 Общие вопросы по Java, Java SE, Kotlin 2 05.02.2016 09:54
Как оптимизировать код C++ slim>>> Помощь студентам 10 25.01.2011 00:05
Как оптимизировать код Delphi OST_K Помощь студентам 1 30.05.2010 06:59
Как создать кнопку для всех листов книги? kipish_lp Microsoft Office Excel 5 06.05.2010 17:43
Как создать условие для кнопок? segail Microsoft Office Excel 4 20.06.2009 14:13