Форум программистов, компьютерный форум, киберфорум
Java: GUI, Графика
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 22.12.2020
Сообщений: 1
1

Не работает ActionListener

22.12.2020, 13:53. Просмотров 2164. Ответов 2
Метки нет (Все метки)

-> Добрый день. Я начинающий программист и ещё много не понимаю. Вот решил во время изучения Java написать мини-кликер. Но в самом начале возникла вот такая проблема. Не работает ActionListener. Нажатие на кнопку происходит, но значение не меняется. В чём ошибка?

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
import javax.swing.*;
import javax.swing.plaf.LabelUI;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.util.concurrent.ConcurrentNavigableMap;
import static java.awt.Font.BOLD;
 
public class Main {
 
    public static void main(String[] args) {
        Frame frame = new Frame();
    }
}
// Приложение.
class Frame extends JFrame {
    // Переменные.
    int coins = 0;
    int coinsclick = 1;
    int coinssec = 0;
    // Основа приложения.
    Frame () {
        // Настройки окна.
        setTitle("Gradian");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        setExtendedState(MAXIMIZED_BOTH);
        setVisible(true);
        revalidate();
        // Шрифт.
        Font mainfont = new Font("Lilita One Rus",BOLD,50);
        // ActionListener.
        // Основная кнопка.
        JButton mainbutton = new JButton();
        mainbutton.setFocusable(false);
        mainbutton.setBorderPainted(false);
        mainbutton.setOpaque(false);
        mainbutton.setContentAreaFilled(false);
        mainbutton.setVisible(true);
        mainbutton.setPreferredSize(new Dimension(500, 500));
        mainbutton.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                coins = coins + coinsclick;
            }
        });
        mainbutton.setIcon(new ImageIcon("src/resource/mainbutton1.png"));
        mainbutton.setPressedIcon(new ImageIcon("src/resource/mainbuttonp1.png"));
        // Основная кнопка - размещение.
        Container contmb = getContentPane();
        contmb.setLayout(new FlowLayout(FlowLayout.CENTER,100,100));
        contmb.add(mainbutton);
        // Счётчик коинов.
        JLabel coines = new JLabel();
        coines.setIcon(new ImageIcon("src/resource/coins3.png"));
        coines.setText(Integer.toString(coins));
        coines.setVisible(true);
        coines.setFont(mainfont);
        coines.setPreferredSize(new Dimension(300,50));
        // Счётчик коинов - размещение.
        Container contcs = getContentPane();
        contcs.setLayout(new FlowLayout(FlowLayout.CENTER,200,200));
        contcs.add(coines);
        // Размещение контейнеров.
        add(contmb);
        add(contcs);
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.12.2020, 13:53
Ответы с готовыми решениями:

Почему не работает ActionListener?
package MyApplet1; import java.awt.*; import java.awt.event.ActionEvent; import...

Не работает: Button.addActionListener(new ActionListener() { public void actionPerformed(actionEvent evt) { } });
Button.addActionListener(new ActionListener() { public void...

ActionListener
Добрый день. Недавно занялся самостоятельным изучением Java. Прошу строго не судить, что создал...

ActionListener
Имеется кнопка в одном классе и текстовое поле - в другом. Требуется по нажатию кнопки изменить...

2
2888 / 2464 / 761
Регистрация: 05.07.2013
Сообщений: 11,921
22.12.2020, 14:56 2
твой код вообще не работает. Посмотри примеры на сайте оракла.
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
public class Main {
 
    private static AtomicInteger coinsCounter = new AtomicInteger(0);
 
    private static void createAndShowGUI() {
        JFrame frame = new JFrame("HelloWorldSwing");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
        JButton mainButton = new JButton();
 
        mainButton.setText("main");
        Container contentPane = frame.getContentPane();
        contentPane.setLayout(new FlowLayout(FlowLayout.CENTER, 100, 100));
        contentPane.add(mainButton);
 
        JLabel coins = new JLabel();
        coins.setText(Integer.toString(coinsCounter.get()));
        contentPane.add(coins);
 
        mainButton.addActionListener(e -> coins.setText(Integer.toString(coinsCounter.incrementAndGet())));
 
        frame.pack();
        frame.setVisible(true);
    }
 
    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(Main::createAndShowGUI);
    }
}
0
287 / 141 / 66
Регистрация: 22.02.2017
Сообщений: 580
22.12.2020, 15:34 3
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JLayeredPane;
import javax.swing.JPanel;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
 
 
 
public class Cliker
{
    public JLayeredPane swap;
    public int n = 0;
    public JTextField tf;
    public JLabel jl;
    public JTable tab;
    
    
    public Cliker()
    {
        make_Window();
        make_Element();
    }
    
    
    private void make_Window()
    {
        JPanel panel = new JPanel();
        panel.setPreferredSize(new Dimension(800, 600));
        panel.setOpaque(false);
        
        JFrame win = new JFrame("Кликер");
        swap = new JLayeredPane();
        swap = win.getLayeredPane();
        win.add(panel);
        win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        win.setResizable(false);
        win.getContentPane().setBackground(Color.WHITE);
        win.pack();
        win.setLayout(null);
        win.setLocationRelativeTo(null);
        win.setVisible(true);
    }
    
    
    private void make_Element()
    {
        tf = new JTextField();
        tf.setBounds(20, 20, 200, 60);
        tf.setText(n+"");
        tf.setEditable(true);
        tf.setForeground(Color.BLACK);
        tf.setSelectionColor(new Color(53, 53, 153, 120));
        tf.setFont(new Font("Arial", Font.PLAIN, 18));
        tf.setLayout(null);
        tf.setHorizontalAlignment(JTextField.CENTER);
        swap.add(tf, new Integer(0), 0);
        //
        jl = new JLabel();
        jl.setBounds(20, 100, 200, 60);
        jl.setText(n+"");
        jl.setHorizontalAlignment(SwingConstants.CENTER);
        jl.setVerticalAlignment(JLabel.CENTER);
        jl.setLayout(null);
        jl.setOpaque(true);
        jl.setVisible(true);
        swap.add(jl, new Integer(0), 0);
        //
        tab = new JTable(2,2);
        tab.setBounds(300, 20, 120, 120); 
        tab.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
        tab.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
        tab.setGridColor(Color.BLACK);
        tab.setForeground(Color.BLACK);
        tab.setOpaque(false);
        tab.setRowHeight(60);
        tab.getTableHeader().setReorderingAllowed(false);
        tab.putClientProperty("terminateEditOnFocusLost", Boolean.TRUE);
        tab.setShowGrid(true);
        tab.setShowVerticalLines(true);
        tab.setShowHorizontalLines(true);
        swap.add(tab, new Integer(0), 0);
        for (int i = 0; i < 2; i++)
        {
            for (int u = 0; u < 2; u++)
            {
                tab.setValueAt(n, i, u);
            }
        }
        //
        JButton jb = new JButton();
        jb.setText(n+"");
        jb.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent e)
            {   
                n++;
                tf.setText(n+"");
                jl.setText(n+"");
                for (int i = 0; i < 2; i++)
                {
                    for (int u = 0; u < 2; u++)
                    {
                        tab.setValueAt(n, i, u);
                    }
                }
                ((JButton) e.getSource()).setText(n+"");
            }
        });
        jb.setBounds(300, 270, 200, 60);
        jb.setVisible(true);
        jb.setLayout(null);
        swap.add(jb, new Integer(0), 0);
        jb.requestFocus();
    }
    
    
    public static void main(String[] args)
    {
        new Cliker();
    }
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.12.2020, 15:34

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

ActionListener!
Всем привет. Я уже относительно давно занимаюсь Java. И у меня возникла проблема с окнами в java....

ActionListener
С утра ищу, как написать обработчик событий для кнопки в java наткнулся на...

ActionListener
Хочу, чтобы при нажатии на кнопку, появлялоcь / исчезало число (переменная класса) Критика по...

Доступ в ActionListener
Добрый день. Ситуация следующая по шелчку мышки открывается новый фрейм. Хочу чтобы при загрузке,...

Проблемы с ActionListener
Всем привет. Хотел сделать мини калькулятор, где нужно ввести textfield два числа и при нажатии...

Задачка с ActionListener
Сижу, у меня время 3 ночи, а я все никак не додумаюсь. Я начинающий &quot;джавист&quot; и у меня не...


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

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

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