Подсчет количества кликов - 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); } } };
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д