• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Sudoku - funkcja sprawdzania po każdym wpisaniu cyfry

Mały hosting, OGROMNE możliwości
0 głosów
214 wizyt
pytanie zadane 24 stycznia 2018 w Java przez lucky_ Nowicjusz (200 p.)
edycja 24 stycznia 2018 przez lucky_

Witam,
w grze Sudoku ustawiłem przycisk "Sprawdzanie", lecz działa on nie tak jakbym chciał. Chciałbym by po każdym uzupełnieniu pustego pola wyświetlał się komunikat "Poprawnie wpisane" lub ewentualnie liczby źle wpisane podświetlały się na czerwono, a dobrze na zielone, funkcja ma sprawdzać tylko te pola gdzie liczby zostały już wpisane.

Z góry dziękuje za pomoc.

 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);
                        }
                    }
                }
            }

1 odpowiedź

0 głosów
odpowiedź 24 stycznia 2018 przez mbabane Szeryf (79,260 p.)

Trzeba skorzystać np. ze zdarzeń klawiatury podpiętych do konkretnych komponentów, prosty przykład:

public class SomeSwing
{
    private static void createAndShowGUI() {
        JFrame frame = new JFrame("HelloWorldSwing");
        frame.setSize(300, 200);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLayout(null);
        
       
        JTextField textField = new JTextField();
        textField.addKeyListener(new SomeKeyboardAction());
        frame.getContentPane().add(textField);
        
        textField.setBounds(10, 10, 100, 30);
        frame.setVisible(true);
    }

    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                createAndShowGUI();
            }
        });
    }
}

class SomeKeyboardAction extends KeyAdapter
{
    @Override
    public void keyReleased(KeyEvent e)
    {
        System.out.println(e.getKeyChar());
    }
}

Do JTextFielda (linia 11) podpięte zostaje zdarzenie zwolnienia klawisza. (Niestety nie wiem tylko do końca jak to wszystko zrealizować żeby zachowane były dobre praktyki, tak żeby nie powstawał jakiś Spaghetti-code, np. w JavieFX jest to trochę prostsze)

Podobne pytania

0 głosów
0 odpowiedzi 218 wizyt
pytanie zadane 5 czerwca 2018 w C# przez PChyba Nowicjusz (120 p.)
0 głosów
4 odpowiedzi 1,089 wizyt
–1 głos
0 odpowiedzi 305 wizyt

93,715 zapytań

142,629 odpowiedzi

323,260 komentarzy

63,257 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...