Good time of day! You are worried about a novice java encoder I have a task to pass to the session. It is necessary to write a program tag. In addition to the basic functionality, the program must implement the possibility of user statistics on the time that a person played. I found the program of the Fifths ready, well, and slightly transformed. The catch in creating a stopwatch. I understand that the data from it must be displayed in the JLabel. The stopwatch itself found on this site. But when trying to output it to JLabel, it gives an error:

pt.java:155: cannot resolve symbol symbol: variable topLabel location: class pt topLabel.setText(minute + ":" + seconds);

The program code itself is further (please do not pay attention to excessive comments).

 import javax.swing.*; import javax.swing.Timer; import javax.swing.border.Border; import java.awt.*; import java.awt.event.*; import java.awt.color.*; import java.util.*; public class pt extends JFrame { // класс pt Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ прямым наслСдником класса JFrame /*ΠŸΡ€ΠΈ построСнии интСрфСйсов Π½ΡƒΠΆΠ½Ρ‹ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹-ΠΊΠΎΠ½Ρ‚Π΅Ρ€ΠΉΠ½Π΅Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса. Π’ Swing ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Ρ‚Π°ΠΊΠΈΡ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ²-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² являСтся JPanel. Класс GridLayout позволяСт Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅ Π² Π²ΠΈΠ΄Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹. Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ячСйкС Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ строк ΠΈ столбцов Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ опрСдСляСтся ΠΈΠ»ΠΈ Π² конструкторС, ΠΈΠ»ΠΈ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² setColumns ΠΈ setRows.*/ private JPanel panel = new JPanel(new GridLayout(4, 4, 2, 2)); /*Π“Π»Π°Π²Π½ΠΎΠ΅ мСню JMenuBar - ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ графичСского интСрфСйса Java Swing*/ private JMenuBar menu = null; private final String fileItems[] = new String [] {"New", "Statistic", "Exit"}; private static Random generator = new Random(); // Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ случайных чисСл private int[][] numbers = new int[4][4]; /* -=== ΠžΠΏΡ€Π΅Π΄ΠΈΠ»Π΅Π½ΠΈΠ΅ клиСнтской ΡˆΠΈΡ€ΠΈΠ½Ρ‹ Π΅ΠΊΡ€Π°Π½Π° ===- */ //ΠΎΠΏΡ€Π΅Π΄ΠΈΠ»Π΅Π½ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² Π΅ΠΊΡ€Π°Π½Π° //Класс Toolkit являСтся абстрактным супСрклассом для всСх Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ AWT. //ΠŸΠΎΡ€ΠΎΠΆΠ΄Π΅Π½Π½Ρ‹Π΅ ΠΎΡ‚ Π½Π΅Π³ΠΎ классы ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для привязки Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ. /*Toolkit kit = Toolkit.getDefaultToolkit(); //ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ссылки Π½Π° Toolkit Dimension screenSize = kit.getScreenSize(); // ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π΅ΠΊΡ€Π°Π½Π° Π² пиксСлях int screenHeight = screenSize.height; // ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ высоту int screenWidth = screenSize.width; // ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ ΡˆΠΈΡ€ΠΈΠ½Ρƒ*/ /* -=== /ΠžΠΏΡ€Π΅Π΄ΠΈΠ»Π΅Π½ΠΈΠ΅ клиСнтской ΡˆΠΈΡ€ΠΈΠ½Ρ‹ Π΅ΠΊΡ€Π°Π½Π° ===- */ public pt() { setTitle("ΠŸΡΡ‚Π½Π°ΡˆΠΊΠΈ"); //Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ ΠΎΠΊΠ½Π° /* -=== 2 - ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ задания Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² ΠΈ полоТСния ΠΎΠΊΠ½Π° ===- */ // ΠŸΠ΅Ρ€Π²Ρ‹Π΅ 2-Π° значСния ΠΌΠ΅Ρ‚ΠΎΠ΄Π° setBonds ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π΅ΠΊΡ€Π°Π½Π΅ ΠΏΠΎ x ΠΈ y; // Π’Ρ‚ΠΎΡ€Ρ‹Π΅ 2-Π° ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ ΡˆΠΈΡ€ΠΈΠ½Ρƒ ΠΈ высоту ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΎΠΊΠ½Π° // setBounds(200, 200, 300, 300); /* -=== /2 - ΠΎΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ задания Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² ΠΈ полоТСния ΠΎΠΊΠ½Π° ===- */ setSize (300, 300); // Π—Π°Π΄Π°Π΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΎΠΊΠ½Π° прилоТСния setLocationRelativeTo(null); // Окно прилоТСния цСнтрируСтся ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ экрана setResizable(true); // Π·Π°Π΄Π°Π΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°ΡΡ‚ΡΠ³ΠΈΠ²Π°Ρ‚ΡŒ ΠΎΠΊΠ½ΠΎ createMenu(); //ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ мСню setJMenuBar(menu); // добавляСм панСль мСню ΠΊ ΠΎΠΊΠ½Ρƒ setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Π·Π°ΠΊΡ€Ρ‹Π²Π°Π΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΏΡ€ΠΈ Π·Π°ΠΊΡ€Ρ‹Ρ‚ΠΈΠΈ ΠΎΠΊΠ½Π° //Класс container β€” прямой подкласс класса component, ΠΈ наслСдуСт всС Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹. //ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π²ΠΎΠ΄ΠΎΠΌ Π½Π° экран помСщаСтся Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ (container). ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ "Π·Π½Π°Π΅Ρ‚", ΠΊΠ°ΠΊ Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ Π½Π° экранС. /*Π‘ΠΎΠ·Π΄Π°Π² ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ β€” ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ класса Component ΠΈΠ»ΠΈ Π΅Π³ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ, слСдуСт Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΊ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ созданному ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ класса container ΠΈΠ»ΠΈ Π΅Π³ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² add (). */ Container container = getContentPane(); init(); panel.setDoubleBuffered(true); panel.setBackground(Color.white); // устанавливаСм Ρ†Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π° container.add(panel); // Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ repaintField(); JLabel(); Timer(); } public void init() { // описаниС ΠΌΠ΅Ρ‚ΠΎΠ΄Π° init int[] invariants = new int[16]; // ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ массив с ΠΈΠΌΠ΅Π½Π΅ΠΌ invariants ΠΈΠ· 16 Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠ² - Π»Ρ‚ 0 Π΄ΠΎ 15 for (int i = 0; i < 4; i++) { // ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅ΠΌ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ i ΠΎΡ‚ 0 Π΄ΠΎ 3 for (int j = 0; j < 4; j++) { // ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅ΠΌ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ j ΠΎΡ‚ 0 Π΄ΠΎ 3 numbers[i][j] = 0; // ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€ Π² Ρ†Ρ‹ΠΊΠ»Π΅ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ΡŒΡΡ с Π½ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Π° invariants[i*4 + j] = 0; // опрСдСляСм ΠΊΠ°ΠΊΠΎΠΉ ΠΈΠ· 16 Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠ² Π±ΡƒΠ΄Π΅Ρ‚ = 0 } } for (int i = 1; i < 16; i++) { // ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅ΠΌ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ i ΠΎΡ‚ 1 Π΄ΠΎ 15 int k; //обьявляСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ k Ρ‚ΠΈΠΏΠ° int int l; //обьявляСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ l Ρ‚ΠΈΠΏΠ° int do { // Ρ†Ρ‹ΠΊΠ» с послСусловиСм k = generator.nextInt(100) % 4; // ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ k присваиваСм ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ число ΠΎΡ‚ 0 Π΄ΠΎ 100 Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ Π½Π° 4 l = generator.nextInt(100) % 4; // ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ l присваиваСм ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠ΅ число ΠΎΡ‚ 0 Π΄ΠΎ 100 Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ Π½Π° 4 } while (numbers[k][l] != 0); // Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€ ΠΏΠΎΠΊΠ° Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив numbers Π½Π΅ Ρ€Π°Π²Π΅Π½ 0 numbers[k][l] = i; // присваиваСм Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠΌΡƒ массиву numbers Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ i Π² Ρ†ΠΈΠΊΠ»Π΅ ΠΎΡ‚ 1 Π΄ΠΎ 15 invariants[k*4+l] = i; // опрСдСляСм ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ всСх Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΊΡ€ΠΎΠΌΠ΅ 0 Π½Π° сСткС } boolean change = true; // Π² Π±ΡƒΠ»Π΅Π²ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ change заносим Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ true int counter = 1; // ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ counter Ρ‚ΠΈΠΏΠ° int ΠΈ присваСваСм Π΅ΠΉ 1 while (change) { change = false; for (int i = 0; i < 16; i++) { if (invariants[i] != i) { for (int j = 0; j < 16; j++) { if (invariants[j] == i) { int temp = invariants[i]; invariants[i] = invariants[j]; invariants[j] = temp; change = true; counter++; break; } } break; } } } if (counter % 2 != 0) { int temp = numbers[0][0]; numbers[0][0] = numbers[3][3]; numbers[3][3] = temp; } } public void JLabel() { Border solidBorder = BorderFactory.createLineBorder(Color.BLACK, 1); // создаСм Π³Ρ€Π°Π½ΠΈΡ†Ρƒ Ρ‡Π΅Ρ€Π½ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π° Font font = new Font("Verdana", Font.PLAIN, 12); // Π·Π°Π΄Π°Π΅ΠΌ Ρ‚ΠΈΠΏ ΡˆΡ€ΠΈΡ„Ρ‚Π°, ΠΈ Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ JLabel topLabel = new JLabel(); // создаСм ΠΎΠ±ΡŒΠ΅ΠΊΡ‚ topLabel Ρ‚ΠΈΠΏΠ° JLabel //topLabel.setText("Π—Π΄Π΅ΡΡŒ Π±ΡƒΠ΄Π΅Ρ‚ сСкундомСр"); topLabel.setBorder(solidBorder); // устанавливаСм Π³Ρ€Π°Π½ΠΈΡ†Ρƒ topLabel.setFont(font); // устанавливаСм Ρ‚ΠΈΠΏ тСкста topLabel.setForeground(Color.RED); // УстанавливаСм Ρ†Π²Π΅Ρ‚ тСкста menu.add(topLabel); // добавляСм JLabel Π½Π° пСнСль menu } public void Timer() { int seconds = 0, minutes = 0; while (true) { seconds++; if (minutes != 0) topLabel.setText(minutes + ":" + seconds); // тСкст Π² JLabel //System.out.print(minutes + ":"); //System.out.println(seconds); if (seconds == 59) { seconds = -1; minutes++; } } } public void repaintField() { //ΠΌΠ΅Ρ‚ΠΎΠ΄ расстановки ΠΊΠ½ΠΎΠΏΠΎΠΊ со значСниями Π½Π° сСткС panel.removeAll(); for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { JButton button = new JButton(Integer.toString(numbers[i][j])); button.setFocusable(false); panel.add(button); button.setBackground(Color.getHSBColor(0.1059322f, 0.5221239f, 0.8862745f)); // устанавливаСм Ρ†Π²Π΅Ρ‚ ΠΊΠ½ΠΎΠΏΠΎΠΊ if (numbers[i][j] == 0) { button.setVisible(false); // сокрытиС Π½ΡƒΠ»Π΅Π²ΠΎΠ³ΠΎ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Π° массива } else button.addActionListener(new ClickListener()); } } panel.validate(); } public boolean checkWin() { //ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π²Ρ‹ΠΈΠ³Ρ€Ρ‹ΡˆΠ° boolean status = true; for (int i = 0; i < 4; i++) { for (int j = 0; j < 4; j++) { if (i == 3 && j > 2) //ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° Ρ‚ΠΎ Ρ‡Ρ‚ΠΎ послСдняя ячСйка Π² сСткС пустая break; if (numbers[i][j] != i * 4 + j + 1) { //ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° соотвСствиС элСмСнтам массива ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚Π°ΠΌ Π² сСткС status = false; } } } return status; } private void createMenu() { menu = new JMenuBar(); JMenu fileMenu = new JMenu("File"); for (int i = 0; i < fileItems.length; i++) { JMenuItem item = new JMenuItem(fileItems[i]); JSeparator separator = new JSeparator(); item.setActionCommand(fileItems[i].toLowerCase()); item.addActionListener(new NewMenuListener()); fileMenu.add(item); fileMenu.add(separator); } //fileMenu.insertSeparator(1); menu.add(fileMenu); } private class NewMenuListener implements ActionListener { public void actionPerformed(ActionEvent e) { String command = e.getActionCommand(); if ("exit".equals(command)) { System.exit(0); } if ("statistic".equals(command)) { JOptionPane.showMessageDialog(null, "Π’Π« Π’Π«Π˜Π“Π ΠΠ›Π˜!", "ΠŸΠΎΠ·Π΄Ρ€Π°Π²Π»ΡΠ΅ΠΌ", 1); } if ("new".equals(command)) { init(); repaintField(); } } } private class ClickListener implements ActionListener { public void actionPerformed(ActionEvent e) { JButton button = (JButton) e.getSource(); button.setVisible(false); String name = button.getText(); change(Integer.parseInt(name)); } } public void change(int num) { // ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π² качСствС входящих ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΌΠ΅Ρ‚ΠΎΠ΄Π° change ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ num Ρ‚ΠΈΠΏΠ° int int i = 0, j = 0; // присваиваСм ΠΏΠ΅Ρ€ΠΌΠ΅Π½Π½Ρ‹ΠΌ i ΠΈ j Ρ‚ΠΈΠΏΠ° int Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ€Π°Π²Π½ΠΎΠ΅ 0 for (int k = 0; k < 4; k++) { // ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅ΠΌ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ k ΠΎΡ‚ 0 Π΄ΠΎ 3 for (int l = 0; l < 4; l++) { // ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅ΠΌ Π΅Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ l ΠΎΡ‚ 0 Π΄ΠΎ 3 if (numbers[k][l] == num) { // Ссли массив numbers[k][l] Ρ€Π°Π²Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ num Ρ‚ΠΎ, i = k; // ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ i ΠΏΡ€ΠΈΡ€Π°Π²Π½ΠΈΠ²Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ k j = l; // ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ j ΠΏΡ€ΠΈΡ€Π°Π²Π½ΠΈΠ²Π°Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ l } } } /*рСализация Π»ΠΎΠ³ΠΈΠΊΠΈ сдвигов ΠΊΠ½ΠΎΠΏΠΎΠΊ Π½Π° сСткС 4 Π₯ 4*/ //сдвиг Π²Π²Π΅Ρ€Ρ… ΠΏΠΎ строкам if (i > 0) { // условиС ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰Π΅Π΅ Π·Π° Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡΠ΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΏΠΎ строкС if (numbers[i - 1][j] == 0) { //сравниваСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ элСмСнта массива с ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ которая Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ массивС Ρ€Π°Π²Π½Π° Π½ΡƒΠ»ΡŽ numbers[i - 1][j] = num; //присваиваСм ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ num Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½Π°Ρ‚ элСмСнта массива numbers[i][j] = 0; //присваСваСм Π½ΡƒΠ»Π΅Π²ΠΎΠΉ элСмСнт массива Π² ячСйку которая ΠΏΠ΅Ρ€Π΅Π΄ этим ΡΠΌΠ΅Ρ‰Π°Π»Π°ΡΡŒ Π² ноль } } //сдвиг Π²Π½ΠΈΠ· ΠΏΠΎ строкам if (i < 3) { if (numbers[i + 1][j] == 0) { numbers[i + 1][j] = num; numbers[i][j] = 0; } } //сдвиг Π²Π»Π΅Π²ΠΎ ΠΏΠΎ столбцам if (j > 0) { if (numbers[i][j - 1] == 0) { numbers[i][j - 1] = num; numbers[i][j] = 0; } } //сдвиг Π²ΠΏΡ€Π°Π²ΠΎ ΠΏΠΎ столбцам if (j < 3) { if (numbers[i][j + 1] == 0) { numbers[i][j + 1] = num; numbers[i][j] = 0; } } repaintField(); if (checkWin()) { JOptionPane.showMessageDialog(null, "Π’Π« Π’Π«Π˜Π“Π ΠΠ›Π˜!", "ΠŸΠΎΠ·Π΄Ρ€Π°Π²Π»ΡΠ΅ΠΌ", 1); init(); repaintField(); setVisible(false); setVisible(true); } } public static void main(String[] args) throws InterruptedException { Thread.sleep(1000); JFrame app = new pt(); app.setVisible(true); } } 

I understand that the Timer method does not see the topLabel object. But why is not clear.
I would appreciate any help.

  • 2
    setTitle ("Fifteen - Evgeny Holevchuk"); // Window title epic fail - Gorets
  • one
    timer implementation - fantastic - Gorets
  • four
    that's all they say, it's just for the control / laboratory / course / diploma, and I am a super-duper master, but not in this area, in the end, no one really knows anything. He recalled one comparison (the teacher told) The mother sends her son for bread, he brings a check, but there is no bread. Where is the bread? Why should he? I brought a check, then I bought the bread. So with knowledge, there is a diploma, but unfortunately there is no knowledge - Alex Kapustin
  • If you have nothing to say in essence, please do not litter the topic. And then you believe that I work in another area or do not believe, these are already your personal problems! - WeB_Master

1 answer 1

a lot of code, and not yours, I don’t want to understand, a session, and you ask that you begin to explain to 0, you just have to explain everything with a meter, there is a special class Timer in Java, you initialize it at the beginning of the game and call the start method, end of the game, call the stop method and output the result in any convenient way

  • Thanks a lot for your help! setTitle ("Fifteen - Evgeny Holevchuk"); // Window title epic fail -))) agree; The fact that in essence it is all shit - I understand. But alas, I need it only for uni. I myself work HTML HTML maker-up ... so, I don’t really understand anything in Java. This is just a coursework. - WeB_Master