С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java GUI
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
jaser
0 / 0 / 0
Регистрация: 30.09.2012
Сообщений: 6
1

Событие для кнопки

25.10.2013, 21:20. Просмотров 546. Ответов 1
Метки нет (Все метки)

кнопка у меня в одном файле, а лисинер в другом. Делаю крестики нолики, хочу чтобы после нажатия на кноку ее имя менялось на X или O. четный/нечетный клик. Если как-то на кнопку можно графику сверху бабахнуть, то тоже бы хотел узнать. И если ткнету в хороший мануал буду признателен. Проблема сделать имено в разных классах.

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
63
64
65
66
67
68
69
70
71
72
73
74
package ticTakToe;
 
import java.awt.*;
import java.util.ArrayList;
 
import javax.swing.*;
 
public class UseRectPanel
{
 
    private static JLabel label = new JLabel("0");
 
    public static void main(String[] args)
    {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(new Dimension(300, 300));
        frame.setTitle("A panel with rectangles");
 
        frame.setLayout(new BorderLayout());
 
        // game field
        JPanel centerPanel = new JPanel(new GridLayout(3, 3));
        centerPanel.setBackground(Color.WHITE);
 
 
 
        ArrayList<JButton> buttonList = new ArrayList<JButton>();
 
        for (int i = 0; i < 9; i++)
        {
            JButton button = new JButton();
            buttonList.add(button);
        }
 
        for (JButton buttonFromList : buttonList)
        {
            centerPanel.add(buttonFromList);
            MessageListener listener = new MessageListener();
            buttonFromList.addActionListener(listener); // Attache
                                                        // actionListener to the
                                                        // button
 
        }
 
        frame.add(centerPanel, BorderLayout.CENTER);
 
        // for some information
 
        label.setBackground(Color.BLUE);
 
        frame.add(label, BorderLayout.SOUTH);
        frame.setVisible(true);
    }
 
 
 
}
 
 
второй файл
 
public class MessageListener implements ActionListener
{
    private int counter = 0;
    public void actionPerformed(ActionEvent event)
    {
        counter++;
        JOptionPane.showMessageDialog(null, "test" + counter);
        имя кнопки как звять?.setText("X");
    }
 
 
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.10.2013, 21:20
Ответы с готовыми решениями:

Как создать событие для кнопки?
у меня есть кнопка JButton button1 = new JButton(&quot;1&quot;); ...

Как сделать генерацию событий? чтобы для каждой сгенерированной кнопки было свое событие?
На панели при нажатии на кнопку генерируется 2 кнопка и заносится в массив...

Событие выбора строки при выборе мышкой событие обрабатывается два раза
Есть JTable, обрабатываю событие выбора строки след. образом: ...

Какое событие использовать для JCheckBox?
Здравствуйте, форумчане! Вот у меня возникла проблема.. Как реализовать, что...

Как создать событие потери фокуса для TextField?
Как создать событие потери фокуса для TextField? Хочу проверять содержимое...

1
Doctor_
236 / 235 / 142
Регистрация: 03.02.2011
Сообщений: 1,436
27.10.2013, 12:47 2
Я бы делал так, хоть это не отдельный файл, как по мне проще в одном файле работать чем в 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
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
 
public class UseRectPanel extends JFrame {
    private static final long serialVersionUID = 1L;
    MListener listener = new MListener();
    JButton[] field = new JButton[9];
    JPanel panel = new JPanel(new GridLayout(3, 3));
 
    UseRectPanel() {
        super("test");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        // screen center
        setLocationRelativeTo(null);
        setSize(200, 200);
        for (int i = 0; i < 9; i++) {
            (field[i] = new JButton()).addActionListener(listener);
            panel.add(field[i]);
        }
        add(panel);
    }
 
    public static void main(String[] args) {
        new UseRectPanel().setVisible(true);
    }
 
    class MListener implements ActionListener {
        int count = 0;
 
        public void actionPerformed(ActionEvent e) {
            JButton button = (JButton) e.getSource();
            Point point = button.getLocation();
            for (int i = 0; i < 9; i++) {
                if (point.equals(field[i].getLocation())) {
                    count++;
                    if (count % 2 == 0) {
                        field[i].setText("O");
                        field[i].setEnabled(false);
                    } else {
                        field[i].setText("X");
                        field[i].setEnabled(false);
                    }
                }
            }
        }
    }
}

И так же где раздаются символы кнопкам, сразу же можно проверять не выиграл ли кто.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2013, 12:47

Создание иконки для кнопки
Практикуюсь в Java всего лишь 2 недели, возник такой вопрос - Как присвоить...

Создание кнопки для закрытия формы
Ребята, помогите пожалуйста, программа есть, а как создать кнопку для закрытия...

Как добавить слушателей для кнопки
Пишу программу с 16-ю игровыми кнопками (массив кнопок, если можно так...


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

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

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