Подсчет количества кликов - Java

Узнай цену своей работы

Формулировка задачи:

Хочу подсчитать количество кликов, это тестовый кусочек программы для другой проги. В чем собственно проблема. Имеется два класса: первый - где основная движуха Main, второй - класс для обработки события, в частности клика мышки. Если писать класс один за другим, то все работает в порядке, но в главном классе тогда нет доступа к переменной sum, в которой сохранено количество кликов. Если же поместить класс-обработчик внутрь главного класса, то переменная станет доступной, но почему-то в строке "MyMouse listener = new MyMouse();" выдается ошибка, подчеркнуто все что после знака равно. Пишет: "'Main.this' cannot be referenced from a static context". Объясните пожалуйста, что это значит и как решить эту проблему. Заранее благодарен.
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
 
public class Main extends JFrame{
    public static void main(String[] args) {
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
        frame.setVisible(true);
        frame.setBounds(300, 200, 600, 400);
        frame.setTitle("WoW!");
        JButton button = new JButton("Чпокни");
        frame.add(button);
        MyMouse listener = new MyMouse();
        button.addMouseListener(listener);
 
    }
    class MyMouse extends MouseAdapter {
        int sum = 0;
        public void mouseClicked(MouseEvent e) {
            System.out.println("Клик " + ++sum);
        }
    }
}

Решение задачи: «Подсчет количества кликов»

textual
Листинг программы
import java.awt.*;
import java.awt.event.*;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JButton;
 
 
public class TestFrame {
 
    public static void createGUI() {
 
        JFrame.setDefaultLookAndFeelDecorated(true);
        JFrame frame = new JFrame("Кликер");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
        JButton button = new JButton("Нажми");
        frame.add(button);
        MyMouse listener = new MyMouse();
        button.addMouseListener((MouseListener) listener);
 
 
        frame.setPreferredSize(new Dimension(200, 100));
 
        frame.pack();
        frame.setVisible(true);}
 
 
    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createGUI();
            }
        });
    }
 
    static class MyMouse extends MouseAdapter {
        int sum = 0;
        public void mouseClicked(MouseEvent e){
            System.out.println("Кликов" + ++sum);
 
        }
    }
};

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4 из 5
Похожие ответы