Обновление JLabel из другого класса - PullRequest
0 голосов
/ 14 марта 2019

У меня сейчас проблема увеличения счетчика очков в сочетании с событием MouseListener.Вот мой текущий прогресс (пока удален какой-то нерелевантный код)

import java.awt.*;
import javax.swing.*;
import java.awt.Color.*;
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
import java.util.Random;

public class Checkers extends JFrame
{
    Random random = new Random();
    private final int ROWS = 2;
    private final int COLS = 5;
    private final int GAP = 2;
    private final int NUM = ROWS * COLS;
    private int x;
    public static int score;
    private JPanel pane = new JPanel(new GridLayout(ROWS,COLS, GAP,GAP));
public  JLabel lbl1 = new JLabel ("score: " + score);

    private MyPanel [] panel = new MyPanel[NUM];
    private Color col1 = Color.RED;
    private Color col2 = Color.WHITE;
    private Color tempColor;

    public Checkers()
    {
        super("Checkers");
        setSize(600,600);
        setVisible(true);
        setBackground(Color.BLACK);
        setBoard();
    }

    //pane background colour and the size of this pane.
    pane.setBackground(Color.BLACK);
    pane.setPreferredSize(new Dimension(300,300));


    //pane background colour and size of this pane.
    pane2.setBackground(Color.white);
    pane2.setPreferredSize(new Dimension(300,300));

    //directions on the board where these panes appear.
    add(pane, BorderLayout.WEST);
    add(pane2, BorderLayout.EAST);
    pane2.add(lbl1);



    pane2.setLayout(new BoxLayout(pane2, BoxLayout.PAGE_AXIS));

И класс MyPanel

import java.awt.Color;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JPanel;

public class MyPanel extends JPanel implements MouseListener {

    public MyPanel() {
        addMouseListener(this);
    }

    @Override
    public void mouseClicked(MouseEvent e) {
        setBackground(Color.BLACK);
        Checkers.score++;

    }

    @Override
    public void mousePressed(MouseEvent e) {
    }

    @Override
    public void mouseReleased(MouseEvent e) {   
    }

    @Override
    public void mouseEntered(MouseEvent e) {    
    }

    @Override
    public void mouseExited(MouseEvent e) { 
    }
}

Ожидаемый результат - Один из меньшихпри щелчке по панелям в первой панели счетчик score на панели 2 увеличивается на 1, и это продолжается до тех пор, пока не будут выполнены все нажатия, и score не может быть увеличено в дальнейшем.

Текущий результат - score увеличивает, но не так, как должно, вместо этого точки переносятся на следующий экземпляр графического интерфейса пользователя (например, если в первом случае щелкнуть 3 панели, точки будутв этом первом случае все равно остается 0, но после создания нового графического интерфейса счетчик очков будет равен 3), а это не то, что мне нужно.

Любая помощь / руководство приветствуются.

...