Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java GUI
Войти
Регистрация
Восстановить пароль
 
qdhtnsoyndtr
6 / 6 / 1
Регистрация: 29.11.2013
Сообщений: 491
#1

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

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

Народ ток начитаю, сильно ругайте, в общем у меня в есть 3 кнопки, для 1, по инструкции создал обработчик событий,
но там не было написано как создать другой, для 2 кнопки. Вариант каждый раз создавать новый файл и в нем класс, мне кажется не правильным.
Можете скинуть простой пример создания событий для 2-х и более кнопок?
Заранее спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.06.2014, 14:38
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Несколько обработчиков событий (Java):

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

Обработка событий
Обработка событий двойной левый щелчек выводит координаты точки

Обработчик событий
Нужно чтобы при нажатии кнопки вверх “VK_UP” созданный объект “sq1” двигался....

Обработка событий
Добрый день. В ходе знакомства с java я добрался до обработки событий....

Обработчик событий
Есть 4 кнопки с названиями времен года, как описать обработчик событий, что бы...

Обработка событий
В общем Пишу шахматы. Рисую доску. использую менджер компоновки GridLayout, и...

15
][irurg
175 / 174 / 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
qdhtnsoyndtr
6 / 6 / 1
Регистрация: 29.11.2013
Сообщений: 491
08.06.2014, 16:31  [ТС] #3
][irurg, ну а если 2 кнопка?

Добавлено через 24 секунды
Что бы они делали не одно и то же, а у каждой своя задача
0
WyPik
Форумчанин
1711 / 1604 / 172
Регистрация: 28.12.2013
Сообщений: 10,850
08.06.2014, 16:34 #4
Цитата Сообщение от qdhtnsoyndtr Посмотреть сообщение
3 кнопки, для 1, по инструкции создал обработчик событий
1 обработчик событий может обрабатывать сколько угодно кнопок,не нужно его создавать по 10 раз
0
qdhtnsoyndtr
6 / 6 / 1
Регистрация: 29.11.2013
Сообщений: 491
08.06.2014, 16:36  [ТС] #5
WyPik, понял, но для уверенности приведите пример с 2 кнопками и их собитиями
0
WyPik
Форумчанин
1711 / 1604 / 172
Регистрация: 28.12.2013
Сообщений: 10,850
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
kushok
123 / 110 / 54
Регистрация: 05.12.2012
Сообщений: 459
Завершенные тесты: 1
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
][irurg
175 / 174 / 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
qdhtnsoyndtr
6 / 6 / 1
Регистрация: 29.11.2013
Сообщений: 491
08.06.2014, 17:23  [ТС] #9
Вооо, то что нужно!) Спасибо) kushok, WyPik

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

Добавлено через 1 минуту
вобщем все 3 примера верные,зависит от области применения
0
][irurg
175 / 174 / 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
DiffEreD
1442 / 779 / 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
easybudda
Модератор
Эксперт CЭксперт С++
10021 / 5944 / 1483
Регистрация: 25.07.2009
Сообщений: 11,230
13.06.2014, 14:16 #15
Цитата Сообщение от WyPik Посмотреть сообщение
а если в проге будет 100 кнопок
Дизайнеру интерфейса лайк за это!
0
WyPik
Форумчанин
1711 / 1604 / 172
Регистрация: 28.12.2013
Сообщений: 10,850
13.06.2014, 18:45 #16
Цитата Сообщение от easybudda Посмотреть сообщение
Дизайнеру интерфейса лайк за это!
ооо,тут ты не прав

Взять допустим обычный блокнот,только его меню содержит порядка 30 кнопок,не учитывая его подинтерфейсы типо редактора шрифта и тд
0
13.06.2014, 18:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2014, 18:45
Привет! Вот еще темы с решениями:

Не работает обработка событий
В intellij IDEA с помощью UI master создал форму, добавил обработчик событий,...

Обработка событий клавиатуры
Доброе время суток. Столкнулся с проблемкой - никак не могу считать данные с...

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

JComboBox обработка событий
Подскажите, плиз! В чем может быть проблема, что JComboBox обрабатывает...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru