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

Несколько обработчиков событий

08.06.2014, 14:38. Показов 4179. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Народ ток начитаю, сильно ругайте, в общем у меня в есть 3 кнопки, для 1, по инструкции создал обработчик событий,
но там не было написано как создать другой, для 2 кнопки. Вариант каждый раз создавать новый файл и в нем класс, мне кажется не правильным.
Можете скинуть простой пример создания событий для 2-х и более кнопок?
Заранее спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.06.2014, 14:38
Ответы с готовыми решениями:

Распараллеливание обработчиков нажатия кнопок SWING JAVA
Добрый день! Интересует следующий вопрос: Можно ли как-нибудь разбить на потоки обработчики кнопок,...

Несколько обработчиков событий
Ситуация следующая, имеется несколько обработчиков различных событий, когда события зажгутся не...

Несколько обработчиков событий для одного элемента
Добрый день! Возможно ли прикрутить несколько обработчиков событий для одного элемента? Например:...

Несколько обработчиков событий одного типа для одной кнопки
Привет. Нужно повесить несколько обработчиков событий на одну кнопку. Анимация по щелчку...

15
181 / 180 / 38
Регистрация: 16.06.2010
Сообщений: 511
08.06.2014, 16:29 2
Java
1
2
3
4
5
6
7
JButton button1 = new JButton();
        button1.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                
            }
        });
0
6 / 6 / 1
Регистрация: 29.11.2013
Сообщений: 492
08.06.2014, 16:31  [ТС] 3
][irurg, ну а если 2 кнопка?

Добавлено через 24 секунды
Что бы они делали не одно и то же, а у каждой своя задача
0
Форумчанин
5958 / 4192 / 406
Регистрация: 28.12.2013
Сообщений: 24,134
08.06.2014, 16:34 4
Цитата Сообщение от qdhtnsoyndtr Посмотреть сообщение
3 кнопки, для 1, по инструкции создал обработчик событий
1 обработчик событий может обрабатывать сколько угодно кнопок,не нужно его создавать по 10 раз
0
6 / 6 / 1
Регистрация: 29.11.2013
Сообщений: 492
08.06.2014, 16:36  [ТС] 5
WyPik, понял, но для уверенности приведите пример с 2 кнопками и их собитиями
0
Форумчанин
5958 / 4192 / 406
Регистрация: 28.12.2013
Сообщений: 24,134
08.06.2014, 16:55 6
ща приведу

Добавлено через 16 минут
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
import java.awt.FlowLayout;
 
import javax.swing.JButton;
import javax.swing.JFrame;
 
public class Buttons extends JFrame {
    
    static Buttons b = new Buttons();
    Listener l = new Listener();
    static JButton b1,b2,b3;
 
    public static void main(String[] args) {
        
        b.init();
 
    }
 
    void init(){
        
        setSize(300, 300);
        setLocationRelativeTo(null);
        setVisible(true);
        setDefaultCloseOperation(3);
        setLayout(new FlowLayout());
        
        b1 = new JButton("1");
        b2 = new JButton("2");
        b3 = new JButton("3");
        
        b1.addActionListener(l);
        b2.addActionListener(l);
        b3.addActionListener(l);
        
        add(b1);
        add(b2);
        add(b3);
    }
    
}
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
 
public class Listener implements ActionListener {
 
    @Override
    public void actionPerformed(ActionEvent e) {
        
        if(e.getSource()==Buttons.b1){
            System.out.println("1");
        }
        if(e.getSource()==Buttons.b2){
            System.out.println("2");
        }
        if(e.getSource()==Buttons.b3){
            System.out.println("3");
        }
        
    }
 
}
ну это так на скорую руку.
Чтоб избавить переменные от модификатора статик,можно лисенер использовать как вложенный класс,либо же отделять батоны от переменных классом,но т.к вы начинающий,можно не париться по поводу статик переменных
0
126 / 113 / 56
Регистрация: 05.12.2012
Сообщений: 463
08.06.2014, 17:04 7
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Random;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
 
 
public class Forum extends JFrame{
    
    
    Forum(){
        this.setBounds(100, 100, 400, 400);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
        this.setResizable(false);
        
        final JPanel panel = new JPanel();
        panel.setLayout(null);
        
        this.add(panel);
        
        
        ActionListener al = new ActionListener(){
                @Override
                public void actionPerformed(ActionEvent e) {
                    JLabel label = new JLabel(e.getActionCommand() + ": Ура!");
                    
                    int x, y;
                    Random r = new Random();
                    
                    x = r.nextInt(300) + 20;
                    y = r.nextInt(300) + 60;
                    
                    label.setLocation(x, y);
                    label.setSize(80, 30);
                    
                    panel.add(label);
                    
                    repaint();
                    
                }
                
        };
        
        JButton[] button = new JButton[3];
        
        for (int i = 0; i< button.length; i++){
            button[i] = new JButton("button " + String.valueOf(i));
            button[i].addActionListener(al); // <--
            button[i].setSize(130, 50);
            button[i].setLocation(i*132, 10);
            panel.add(button[i]);
        }    
        
    }
 
    public static void main(String[] args) {
        new Forum();
    }
}
0
181 / 180 / 38
Регистрация: 16.06.2010
Сообщений: 511
08.06.2014, 17:22 8
Цитата Сообщение от qdhtnsoyndtr Посмотреть сообщение
ну а если 2 кнопка?
Java
1
2
3
4
5
6
7
8
9
10
11
12
 button2.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                
            }
        });
 button3.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                
            }
        });
в чем проблема?
0
6 / 6 / 1
Регистрация: 29.11.2013
Сообщений: 492
08.06.2014, 17:23  [ТС] 9
Вооо, то что нужно!) Спасибо) kushok, WyPik

Добавлено через 1 минуту
][irurg, ой, извиняюсь, не правильно увидел код, ваш вариант еще быстрей
0
Форумчанин
5958 / 4192 / 406
Регистрация: 28.12.2013
Сообщений: 24,134
08.06.2014, 17:27 10
Цитата Сообщение от qdhtnsoyndtr Посмотреть сообщение
][irurg, ой, извиняюсь, не правильно увидел код, ваш вариант еще быстрей
а если в проге будет 100 кнопок,к каждой так писать ?
0
6 / 6 / 1
Регистрация: 29.11.2013
Сообщений: 492
08.06.2014, 17:28  [ТС] 11
WyPik, ну у меня цель поменьше) не 100 кнопок, и сделать как можно проще и понятней для себя.
0
Форумчанин
5958 / 4192 / 406
Регистрация: 28.12.2013
Сообщений: 24,134
08.06.2014, 17:40 12
как можно проще в моем примере,дальше можно как написал kushok(но тут еще массив имен кнопок понадобится ), а пример ][irurg, подходит если основной интерфейс не распологает большого наличия слушателя данного типа

Добавлено через 1 минуту
вобщем все 3 примера верные,зависит от области применения
0
181 / 180 / 38
Регистрация: 16.06.2010
Сообщений: 511
08.06.2014, 19:11 13
Можно использовать действия
Java
1
JButton button1 = new JButton(new ShowMessageAction());
Java
1
2
3
4
5
6
7
8
9
10
11
12
private class ShowMessageAction extends AbstractAction {
 
        public ShowMessageAction() {
            putValue(Action.NAME, "Настройки");
            putValue(Action.SHORT_DESCRIPTION, "Показывает диалоговое окно с настройками");
        }
 
        @Override
        public void actionPerformed(ActionEvent e) {
            JOptionPane.showMessageDialog(null, "Настройки");
        }
    }
0
1458 / 795 / 257
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
11.06.2014, 11:43 14
На 100 кнопочек:
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
package com.company;
 
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
 
public class Main {
 
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            @Override
            public void run() {
                try {
                    UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
                } catch (Exception e) {
                }
                JFrame frame = new Frame();
                frame.setTitle("100 Buttons");
                frame.setLocationByPlatform(true);
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setVisible(true);
            }
        });
    }
}
 
class Frame extends JFrame
{
    private JPanel buttonPanel;
 
    public Frame()
    {
        buttonPanel = new JPanel(new GridLayout(10,10));
        for (int i = 1; i <= 100; i++) {
            buttonPanel.add(new JButton(new ShowMessageAction("Кнопка " + i)));
        }
 
        add(buttonPanel);
        pack();
    }
}
 
class ShowMessageAction extends AbstractAction {
 
    public ShowMessageAction(String name) {
        putValue(Action.NAME, name);
        putValue(Action.SHORT_DESCRIPTION, "Показывает диалоговое окно с настройками");
    }
 
    @Override
    public void actionPerformed(ActionEvent e) {
        String message = (String) getValue(Action.NAME);
        JOptionPane.showMessageDialog(null, message);
    }
}
0
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
12830 / 7567 / 1764
Регистрация: 25.07.2009
Сообщений: 13,959
13.06.2014, 14:16 15
Цитата Сообщение от WyPik Посмотреть сообщение
а если в проге будет 100 кнопок
Дизайнеру интерфейса лайк за это!
0
Форумчанин
5958 / 4192 / 406
Регистрация: 28.12.2013
Сообщений: 24,134
13.06.2014, 18:45 16
Цитата Сообщение от easybudda Посмотреть сообщение
Дизайнеру интерфейса лайк за это!
ооо,тут ты не прав

Взять допустим обычный блокнот,только его меню содержит порядка 30 кнопок,не учитывая его подинтерфейсы типо редактора шрифта и тд
0
13.06.2014, 18:45
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.06.2014, 18:45
Помогаю со студенческими работами здесь

Создание обработчиков событий
Здравствуйте. Вот для разнообразия (раньше пользовался VS) поставил Qt 5.4.0, вроде всё норм, да...

Удаление обработчиков событий
function LoadingImage(xpost) { var isLoaded = 0, post =...

Создание обработчиков событий
Я создал динамически форму а на нем кнопку button, как теперь создовать обработчики событий,...

Написание своих обработчиков событий
Вот значит меня интересует как для своего компонента, который не является потомком никакого...


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

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