Funkcja "Sprawdzenie" po każdym wpisaniu cyfry

0

Witam,
w grze Sudoku ustawiłem przycisk "Sprawdzanie", lecz działa ono nie tak jak sobie myślałem. Chciałbym by po każdym uzupełnieniu pustego pola wyświetlał się komunikat "Poprawnie wpisane". Z pomocą wujka Google udało mi się napisać tylko tyle. Proszę o pomoc w rozwiązaniu problemu.

   public boolean Sprawdzenie() { 
            boolean flag = true;    //ustawia znacznik dostepnosci obiektow tablicowych
            for (int i = 0; i < 9; i++) {
                for (int j = 0; j < 9; j++) {   //Sprawdzanie w komórkach
       if (!sudokuBoard.getFields()[i][j].getText().equals(String.valueOf(sudokuBoard.getSolution()[i][j]))) {
                        return false;
                    } 
                }
            }
            return true;

        }
0

Musisz dodać jakiś event "reagujący" na edycję pola i w nim wywołać metodę sprawdzenie.

Swoją droga o ile dobrze rozumiem jak działa ta metoda to za każdym razem będziesz sprawdzał cały diagram, a moim zdaniem powinieneś sprawdzać tylko czy wpisana cyfra jest poprawna.

0

Próbowałem coś zrobić, lecz wyświetla mi komunikat i sprawdza całe pole.

private void SprawdzenieButtonAction() {
btnSprawdzenie.setFocusable(false); // usuwanie elementu z kolejki dostepu

    btnSprawdzenie.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) { //Wybor elementu
            boolean flag = true; //ustawia znacznik dostepnosci obiektow tablicowych
            for (int i = 0; i < 9; i++) {
                for (int j = 0; j < 9; j++) { //Sprawdzanie w komórkach
                    if (!sudokuBoard.getFields()[i][j].getText().equals(String.valueOf(sudokuBoard.getSolution()[i][j]))) {
                        flag = false; 
                        sudokuBoard.getFields()[i][j].setBackground(Color.MAGENTA); 
                    } else { 
                        if (sudokuBoard.getFields()[i][j].getBackground().getRGB() != -986896) {
                            sudokuBoard.getFields()[i][j].setBackground(Color.CYAN);
                        }
                    }
                }
            }
0

Jakiś czas temu pisałem Sudoku. Problem sprawdzania ominąłem - użytkownik wybierał cyfrę z popupmenu. Do każdego pola planszy podpiąłem MouseLitenera.

    class Listener extends MouseAdapter
    {
        private int row;
        private int col;
        //--------------------
        public Listener(int row, int col)
        {
            this.row = row;
            this.col = col;
        }
        //--------------------
        public void mouseReleased(MouseEvent me)
        {
            JPopupMenu popupMenu = new JPopupMenu();
            JMenuItem mi = new JMenuItem(" ");
            mi.addActionListener(e -> changeValue(row, col, e.getActionCommand().trim()));
            popupMenu.add(mi);
            for(int i = 1;i <= 9; i++)
            {
                mi = new JMenuItem("" + i);
                mi.addActionListener(e -> changeValue(row, col, e.getActionCommand().trim()));
                popupMenu.add(mi);
            }
            popupMenu.show(me.getComponent(), me.getX(), me.getY());
        }
    }

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0