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

Dziwny wygląd JButton po deserializacji

Object Storage Arubacloud
0 głosów
125 wizyt
pytanie zadane 24 lutego 2018 w Java przez kosttek Początkujący (450 p.)

Witam laugh
Mam problem z grą kółko i krzyżyk przy wczytywaniu stanu gry.  Kod wygląda mniej więcej tak:

Kod z serializacją: 

public class TicTacToe extends JPanel
{
    JButton[] buttons = new JButton[9];
    JPanel buttonPanel;

    public TicTacToe()
    {
        JButton load = new JButton("Load");
        load.addActionListener(event -> {
            try {
                FileInputStream inputStream = new FileInputStream("TicTacToe.ser");
                ObjectInputStream objectInputStream = new ObjectInputStream(inputStream);
                buttons = (JButton[]) objectInputStream.readObject();
                objectInputStream.close();

                buttonPanel.removeAll();
                for(int i = 0; i < 9; i++){
                    buttonPanel.add(buttons[i]);
                }

                repaint();
            }
            catch (Exception e) {
                e.printStackTrace();
            }
        });
    }

    private class buttonListener implements ActionListener, Serializable
    {

        public void actionPerformed(ActionEvent event)
        {

            //obsługa kliknięcia, każdy przycisk ma osobny obiekt buttonListener


            //zapis stanu gry
            try {
                FileOutputStream outputStream = new FileOutputStream("TicTacToe.ser");
                ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);
                objectOutputStream.writeObject(buttons);
                objectOutputStream.close();
            }
            catch (Exception e) {
                e.printStackTrace();
            }
        }
}

 

Gra po uruchomieniu wygląda tak:

a po kliknięciu przycisku Load ostatni przycisk, który wybrałem przed kliknięciem Load wygląda tak dopóki na niego nie najadę myszką lub nie kliknę gdzieś indziej. Macie jakiś pomysł jak to naprawić? laugh

Z góry dzięki za pomoc wink

2 odpowiedzi

+1 głos
odpowiedź 25 lutego 2018 przez Mateusz51 Nałogowiec (28,180 p.)
wybrane 27 lutego 2018 przez kosttek
 
Najlepsza
Zakładam że problem jest spowodowany tym że klikniecie guzika serializuje grę. I specjalizacja jest wykonywana w momencie gdy guzik jest widocznie naciśnięty. Przez co po załadowaniu guzik ma taki stan w jakim został zapisany,

Jak to naprawić to nie za bardzo mam pomysł.
+1 głos
odpowiedź 25 lutego 2018 przez Wiciorny Ekspert (270,150 p.)

objectInputStream.readObject()

generalnie, nie znam struktury całego kodu, problem może leżeć w implementacji statycznej ... gdyż czytanie obiektu do strumienia wczytuje go wraz ' ze stanem ' który przynależy do klasy czyli kliknięty button dajmy na to przekazuje swój stan jako aktywny  

masz link do gita? 

Podobne pytania

0 głosów
0 odpowiedzi 97 wizyt
+3 głosów
2 odpowiedzi 220 wizyt
0 głosów
1 odpowiedź 149 wizyt
pytanie zadane 17 listopada 2019 w C i C++ przez fff Gaduła (3,950 p.)

92,573 zapytań

141,423 odpowiedzi

319,647 komentarzy

61,959 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...