Problem ze zmianą zawartości panelu

0

Cześć

Mam następujący problem z javą:

Mam jakiś główny panel, nazwijmy go mainPanel.
W mainPanel są dwa panele: panel1 i panel2.

W panel1 jest sobie zwykła lista JList z jakimiś elementami.
Chcę w zależności od wyboru elementu na liście w panel1 zmieniać zawartość panel2.

W tym momencie mam to zrobione tak:

panel2 (ten, który chcę zmieniać) ma metodę:

public void fillPanelFromModel(object model) {

  // i tutaj jakiś update wszystkich komponentów w tym panelu
}

mainPanel (główny) ma metodę:

public void fillPanelFromModel(object model) {

  panel2.fillPanelFromModel(model);
}

natomiast panel1 ma gdzieś zapisaną referencję do mainPanel, i następująco zdefiniowaną listę:

list.addListSelectionListener(new ListSelectionListener() {

  @Override
  public void valueChanged(ListSelectionEvent e) {
    
    mainPanel.fillPanelFromModel(list.getModel().getSelectedItem());
  }
});

z grubsza tak to wygląda, i problem jest taki, że to nie działa - w sensie ten panel2 w ogóle się nie zmienia.
Wie ktoś może dlaczego tak się dzieje? Próbowałem dodać jakieś repaint, revalidate itp ale nie pomaga

Pozdrawiam
sav

0

Siedzę w tym od niedawna, więc pewnie mało jeszcze wiem, ale na czym dokładnie ma polegać ten update komponentów? Z tego co podałeś wywnioskować chyba można tylko, że tam gdzieś coś jest nie tak.

0

Nie wiem jak bardzo ma się zmieniać panel2, więc zakładam, że cały panel2 ma zmienić swój wygląd. W takim przypadku z panel2 możesz usunąć wszystkie elementy instrukcją:

panel2.removeAll(); //Czyści zawartość panelu do zera
.
panel2.add ...;
// tu dodajesz instrukcje które ustawiają zawartość panelu od nowa
.
panel2.validate();
panel2.repaint();

Mam nadzieje, że to rozwiąże Twój problem.
Pozdrawiam

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