Przekazywanie wydarzenia z jednej klasy do drugiej

Odpowiedz Nowy wątek
2018-07-25 18:26
0

Zrobiłem sobie programik, w których chciałbym przesłać wydarzenie (wciśnięcie przycisku) z jednej klasy do drugiej. Zrobiłem trochę to po januszowemu, bo nie umiałem przekazać zdarzenia między klasami, ale wartości która była inicjowana przy zdarzeniu już tak. Zatem w jednej klasie robie sobię gui:

class FrameTest extends JFrame
{

    public FrameTest()
    {
        int result;
        CardLayout card = new CardLayout();
        JPanel cards = new JPanel(card);
        JPanel card1,card2,card3;

        card1 = new JPanel(new BorderLayout());
        card2 = new JPanel();
        card3 = new JPanel(new BorderLayout());

        JPanel northPanel = new JPanel();
        northPanel.add(new TextWindow());
        card1.add(northPanel,BorderLayout.NORTH);

        card2.add(new WindowTest(card2));
        card3.add(new NextWindow());
        JPanel southPanel = new JPanel();
        JButton startButton = new JButton("Rozpocznij test");
        southPanel.add(startButton);
        startButton.setActionCommand("next");
        startButton.addActionListener(new ActionListener()
        {
            @Override
            public void actionPerformed(ActionEvent event)
            {
                String actioncommand = event.getActionCommand();
                if(actioncommand.equalsIgnoreCase("next"))
                {
                    card.show(cards,"Jaja");
                    System.out.println("Wciśnięty przycisk");

                }
            }
        });
        card1.add(southPanel,BorderLayout.CENTER);
        cards.add(card1, "Dupa");
        cards.add(card2, "Jaja");
        cards.add(card3,"Cycki");
        add(cards);
        WindowTest test = new WindowTest(); //instancja drugiej klasy, z której wydobywam wartość pola static
        result=test.get(); //wartość przekazana z drugiej klasy w której nastąpiło zdarzenie
        //System.out.println("Ten kod cały czas się wywołuje.Result="+result);
        if(result==5)
        {
            System.out.println("Warunek spełniony.Wartość result=" +result); //kod programu jaki ma się stać kiedy nastąpi zdarzenie w drugiej klasie
            card.show(cards,"Cycki");
        }
        pack();
        setLocationByPlatform(true);

    }

}

Druga klasa zawiera natomiast funkcje set i get wartości static. W drugiej klasie też uruchamiam pewne gui w którym mam przycisk i do którego dodaje action listenera w ten sam spobób. I tak w kodzie funckji ActionPerformed mam:

 private void jRadioButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                              
        // TODO add your handling code here:
        set(5);
        new FrameTest();
    }                          

generalnie System.out.println mi działa w warunku if w konstruktorze klasy FrameTest, jednak zmiana karty(CardLayout) już mi nie działa. Ktoś wie czemu to nie działa ? Jak najlepiej przekazać zdarzenie z innej klasy prosto do konstruktora pierwszej klasy ?

Dzięki za wszelkie porady i wskazówki

Pozostało 580 znaków

2018-07-25 18:51
0

wzorzec Obserwator?

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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