Подсчет количества кликов - 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);
}
}
};