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